给出如下模型:
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
(即设置属性而不是通过它过滤)?
答案 0 :(得分:1)
只需将perform_create
添加到现有的ViewSet类
class SomethingView(viewsets.ModelViewSet):
def perform_create(self, serializer):
serializer.save(user=self.request.user)
检查docs了解更多信息