【发布时间】:2014-01-13 14:27:52
【问题描述】:
假设我有一个这样的 ToDo 模型:
class ToDo(models.Model):
user = models.ForeignKey(UserModel)
text = models.CharField(max_length=255, blank=True)
我正在为我的 API 使用 django rest 框架。然后我将它用于序列化程序:
class ToDoSerializer(serializers.ModelSerializer):
class Meta:
model = ToDo
fields = ('text', 'id', 'user')
这是ViewSet:
class ToDoResponder(viewsets.ModelViewSet):
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
model = ToDo
def get_queryset(self):
return ToDo.objects.filter(user=self.request.user)
serializer_class = ToDoSerializer
当我使用TokenAuthentication 和get_queryset() 时,用户只能看到他自己的待办事项。不幸的是,我可以发送 ToDos 并伪造用户字段,这样我就可以向另一个用户的 ToDo 列表发送垃圾邮件。我不想要那个。
我如何告诉 django-rest-framework 以最 DRY/Pythonic 的方式将 request.user 用于特定字段,例如“用户”?毕竟这不是特殊要求,应该重复使用。
谢谢
【问题讨论】:
标签: python django django-rest-framework serialization