我有以下模型、序列化程序和视图。我的目标是传递一个自定义字符串,例如
referrer = "pid=email&af_sub1=ui_1120&c=xyz"
在 POST 方法中(RegisterViewSet 下面)然后到 viewset/serializer 使用这个信息来填写referral_campaign、referrer_media 和incominging_user
所以:1.referrer 是 write_only 字段 2.referrer 不是模型中的字段,但该信息将用于填充模型中的字段
如何以 DRF 方式实现这一点?
模型
class User(AbstractUser):
first_name = models.CharField(max_length=100, null=True, blank=True)
last_name = models.CharField(max_length=100, null=True, blank=True)
# social/viral feature related fields
referral_campaign = models.CharField(default="", max_length = 200, help_text="Campaign that led to the user signup")
referral_media_source = models.CharField(default="", max_length = 200, help_text="Campaign that led to the user signup")
inviting_user = models.ForeignKey('self', help_text="Inviting user", null=True, blank=True)
串行器
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('first_name', 'last_name',)
write_only_fields = ('first_name', 'last_name', 'referrer') #how to use this 'referrer' field to populate the Model fields?
read_only_fields = ('id',)
看法
class RegisterViewSet(generics.CreateAPIView):
model = User
serializer_class = UserSerializer
permission_classes = [
permissions.AllowAny
]