【发布时间】:2015-09-08 15:41:12
【问题描述】:
需要使用mixins编辑user profile,通过向相应的url发送PUT请求(包含要更新信息的用户的id)
以下代码中缺少什么/需要更改以实现上述功能?
models.py:
class UserProfile(models.Model):
id = models.AutoField(primary_key=True)
user = models.OneToOneField(User)
profile_picture = models.ImageField(upload_to='documents', blank=True)
def __str__(self):
return self.user.username
serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username','password', 'first_name', 'last_name', 'email',)
write_only_fields = ('password',)
read_only_fields = ('is_staff', 'is_superuser', 'is_active', 'date_joined',)
def restore_object(self, attrs, instance=None):
user = super(UserSerializer, self).restore_object(attrs, instance)
user.set_password(attrs['password'])
return user
class UserProfileSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = UserProfile
fields = ('id','user','profile_picture',)
views.py
class UserMixin(object,):
queryset = UserProfile.objects.all()
serializer_class = UserProfileSerializer
permission_classes = (IsOwnerOrReadOnly,)
class UserProfileView(UserMixin, RetrieveUpdateDestroyAPIView):
pass
询问是否需要更清晰。
【问题讨论】:
-
但是你的问题是什么?也许解释一下你用上面提到的代码得到了什么,以及完成所需任务缺少什么?
-
首先,我的用户配置文件没有得到更新(没有任何错误失败)......其次,我怀疑如果我更新用户配置文件,它是否也会在用户模型中自动更新?
标签: django django-rest-framework mixins put updatemodel