3
模型反序列化使用request.user可以說我有一個待辦事項模式是這樣的:在Django的REST框架
class ToDo(models.Model):
user = models.ForeignKey(UserModel)
text = models.CharField(max_length=255, blank=True)
而且我用我的API Django的REST框架。由於我使用TokenAuthentication
和get_queryset()
用戶只能看到自己的託多斯
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
:那我也會有這樣的串行:
class ToDoSerializer(serializers.ModelSerializer):
class Meta:
model = ToDo
fields = ('text', 'id', 'user')
,這爲ViewSet
。不幸的是,我可以發送ToDos並僞造用戶字段,以便我可以將其他用戶的ToDo列表垃圾郵件。我不想那樣。
我怎麼能告訴django-rest-framework
使用request.user
特定的領域,如'用戶'在最乾燥/ pythonic的方式?畢竟這不是特別的要求,應該重複使用。
感謝
謝謝你應該工作,但我仍然在尋找另一種解決方案,因爲我想'request.user'作爲'user'的默認值,所以客戶端不必發送用戶ID。 – Harper04
我剛更新了答案 –
正是我想要的!一個注意事項:我必須從串行器的字段列表中刪除'user',否則pre_save()將不會被調用 – Harper04