繁体   English   中英

在请求后为序列化器指定django-rest-framework字段?

[英]Specify django-rest-framework field for serializer after request?

我有以下代码:

models.py

class Interview(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, help_text="The Primary Key of the Interview")
    organization = models.ForeignKey(Organization, on_delete=models.CASCADE, help_text="The Primary Key of the Organization in the interview")
    question = name = models.CharField(max_length=200, help_text="The Question")

serializers.py

class InterviewSerializer(serializers.ModelSerializer):
    class Meta:
        model = Interview
        fields = ('organization', 'question')

views.py

class InterviewViewset(viewsets.ModelViewSet):
    """
    API endpoint that allows Interviews to be viewed or edited.
    """
    serializer_class = InterviewSerializer

现在,创建采访的请求主体需要以下字段:

{
  "organization": "string",
  "question": "string"
}

我希望将采访对象的组织自动设置为当前的用户组织( request.user.Organization我有一个自定义的User模型)。 如何为我的视野优雅地做到这一点?

一种方法(可能是最好的方法)是重写ModelSerializer类的save / create / update方法。 关于它的DRF文档

在那里,您可以使用self.context.get("request")来获取当前用户。 而且,如果您仍然需要对organization字段进行序列化,只需将其设置为read_only=True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM