2016-09-01 10 views
1

私はこのモデルがあります:このエンドポイントとDjango Restユーザー属性を更新するには?

class UserProfileSerializer(UserSerializer): 

    stuff = serializers.SerializerMethodField() 

    def get_stuff(self, obj): 
     return obj.profile.stuff 

    def update(self, instance, validated_data): 
     instance.profile.stuff = validated_data.get('stuff', instance.profile.stuff) 
     instance.save() 
     return instance 

:このシリアライザと

class UserProfile(models.Model): 

    user = models.OneToOneField(User, related_name='profile') 
    stuff = models.TextField(default='') 

User.profile = property(UserProfile) 

class UpdateUserProfile(UpdateAPIView): 

    model = UserProfile 
    serializer_class = UserProfileSerializer 
    permission_classes = [permissions.IsAuthenticated] 

    def get_object(self): 
     return self.request.user 

私は私のもののフィールドを更新するために、HTTP/PUTを呼び出すと、それはdoesnの更新しないでください。どうしてか分かりません。

答えて

0

更新メソッドが実行中で、メソッドでinstance.profileを取得している場合。問題は

instance.profile.stuff = validated_data.get('stuff', instance.profile.stuff) 
instance.save() 

で発生し、プロファイルインスタンスを更新する必要があります。

instance.profile.stuff = validated_data.get('stuff', instance.profile.stuff) 
instance.profile.save() 

"instance.profile.save()"プロファイルインスタンスが更新されます。

関連する問題