在请求后为序列化程序指定django rest框架字段?

在请求后为序列化程序指定django rest框架字段?,django,django-rest-framework,Django,Django Rest Framework,我有以下代码: 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

我有以下代码:

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")
class InterviewSerializer(serializers.ModelSerializer):
    class Meta:
        model = Interview
        fields = ('organization', 'question')
class InterviewViewset(viewsets.ModelViewSet):
    """
    API endpoint that allows Interviews to be viewed or edited.
    """
    serializer_class = InterviewSerializer
serializers.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")
class InterviewSerializer(serializers.ModelSerializer):
    class Meta:
        model = Interview
        fields = ('organization', 'question')
class InterviewViewset(viewsets.ModelViewSet):
    """
    API endpoint that allows Interviews to be viewed or edited.
    """
    serializer_class = InterviewSerializer
views.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")
class InterviewSerializer(serializers.ModelSerializer):
    class Meta:
        model = Interview
        fields = ('organization', 'question')
class InterviewViewset(viewsets.ModelViewSet):
    """
    API endpoint that allows Interviews to be viewed or edited.
    """
    serializer_class = InterviewSerializer
现在,创建面试的请求主体需要以下字段:

{
  "organization": "string",
  "question": "string"
}
我希望面试的组织自动设置为当前用户组织(
request.user.organization
-我有一个自定义用户模型)。如何为我的视图集优雅地执行此操作?

一种方法(可能是最好的)是重写ModelSerializer类的
保存
/
创建
/
更新
方法


在那里,您可以使用
self.context.get(“请求”)
获取当前用户。如果仍然需要序列化
组织
字段,只需将其设置为
read\u only=True

,这也是我的第一个想法,但我认为必须有一种更简单的方法来使用
获取序列化器\u上下文
。但是,对我来说,使用
get\u serializer\u context
会导致违反
notnull约束
。我不知道如何处理
get\u serializer\u context
。我不保存/创建模型实例。您的序列化程序中已经有了请求上下文,应该足够了。我希望在将其传递给序列化程序之前,使用
get\u serializer\u context
设置
组织机构
,以便序列化程序可以使用它创建对象。无论如何,在保存模型实例之前,您应该编写一些代码来设置
组织
,因为DRF不会为您这样做。这里面没有这种魔力