基于request.user设置模型属性

时间:2017-08-27 13:11:55

标签: django-rest-framework

给出如下模型:

class Something(models.Model):
    user = models.ForeignKey(User, on_delete=models.PROTECT)
    # ...

我可以使用后端过滤器(http://www.django-rest-framework.org/api-guide/filtering/#custom-generic-filtering)来仅显示视图中属于用户的过滤器。

class SomethingView(viewsets.ModelViewSet):
    queryset = Something.objects.all()
    filter_backends = (OwnedByUserBackend,) # Assume this filters by request.user

如果我想创建Something资源,是否有办法使用与过滤器相反的内容自动将其user属性设置为request.user(即设置属性而不是通过它过滤)?

1 个答案:

答案 0 :(得分:1)

只需将perform_create添加到现有的ViewSet类

即可
class SomethingView(viewsets.ModelViewSet):
    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

检查docs了解更多信息