覆盖CreateAPIView,访问请求用户

4

我该如何将 created_by 保存为请求用户?请注意,此字段未在序列化程序中定义。

class User(models.Model):
    email = models.EmailField(...)
    name = models.CharField(...)
    created_by = models.ForeignKey('User')

class UserSerializer(serializer.ModelSerializer):
    class Meta:
        model = User
        fields = ['email', 'name']

class CreateUserApiView(CreateAPIView):
    model = User
    serializer_class = CreateRequesterSerializer

    def create(self, request, *args, **kwargs):
        # how can I save `created_by` as request user?
        return super(CreateUserApiView, self).create(request, *args, **kwargs)
1个回答

8

重写 CreateAPIViewperform_create() 方法

class CreateUserApiView(CreateAPIView):
    # your code

    <b>def perform_create(self, serializer):
        serializer.save(created_by=self.request.user)</b>

1
如果created_by是必填字段,那么这个if语句的作用是什么?如果在post请求中没有这个字段,那么在到达perform_create()之前就会验证失败。 - Carsten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接