2017-09-14 7 views
0

私はDjangoとDRFを手に入れようとしていますが、問題があります。レコードの一部を更新するPUTリクエストを作成したいと思います。DRF PUT部分的な返信が返されない

私は現在、以下の部分を持っている -

models.py

class MyUser(models.Model): 
    # Link to User model instance. 
    user = models.OneToOneField(User) 
    first_name = models.CharField(max_length=32, null=True, blank=True) 
    lastname = models.CharField(max_length=32, null=True, blank=True) 
    joindate = models.DateTimeField(null=False, blank=False) 

    def __str__(self): 
     return self.user.username 

からviews.py API /から

class MyUserDetailUpdateView(GenericAPIView, UpdateModelMixin): 
    queryset = MyUser.objects.all() 
    serializer_class = MyUserPartialUpdateSerializer 
    lookup_field = 'user' 

    def put(self, request, *args, **kwargs): 
     return self.partial_update(request, *args, **kwargs) 

API/serializers.py

class MyUserPartialUpdateSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = MyUser 
から

投稿者urls.py

url(r'^api/userupdate/(?P<user>[\w]+)/$', apiviews.MyUserDetailUpdateView.as_view(), name='my_user_detail_view_api') 

は、テストのために私がhttpieを使用してみてください -

http -v PUT http://127.0.0.1:8000/api/userupdate/johndoe/ first_name="Johnny" 

サーバ側が報告している "が見つかりません:/ API/userdate/JOHNDOE /" と返すHTTP 404をクライアントに。

部分的な更新は何が欠けていますか?

おかげ

+0

あなたは、あなたの場合には、そのIDを、URL内の主キーを渡す必要があります。 –

答えて

1

MyUser.userUserインスタンスことになっています。あなたはそのように使うことはできません。

MyUserusernameに関連付けられています。その場合、あなたはURLから余分にしたい引数はlookup_url_kwargとして設定され、lookup_fieldは、関連するモデル間での参加くださいます:

class MyUserDetailUpdateView(GenericAPIView, UpdateModelMixin): 
    queryset = MyUser.objects.all() 
    serializer_class = MyUserPartialUpdateSerializer 
    lookup_field = 'user__username' 
    lookup_url_kwarg = 'user' 
+0

これに加えて、シリアライザにfields = '__all__'を追加する必要もありました。 – jimbo

関連する問題