【发布时间】:2014-04-03 04:33:58
【问题描述】:
我正在尝试通过 Django Rest Framework API 调用使我的用户模型 RESTful,以便我可以创建用户以及更新他们的个人资料。
但是,当我对我的用户进行特定的验证过程时,我不希望用户在创建帐户后能够更新用户名。我尝试使用 read_only_fields,但这似乎在 POST 操作中禁用了该字段,因此在创建用户对象时我无法指定用户名。
我该如何实施呢?现在存在的 API 的相关代码如下。
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'password', 'email')
write_only_fields = ('password',)
def restore_object(self, attrs, instance=None):
user = super(UserSerializer, self).restore_object(attrs, instance)
user.set_password(attrs['password'])
return user
class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
serializer_class = UserSerializer
model = User
def get_permissions(self):
if self.request.method == 'DELETE':
return [IsAdminUser()]
elif self.request.method == 'POST':
return [AllowAny()]
else:
return [IsStaffOrTargetUser()]
谢谢!
【问题讨论】:
-
嘿,我之前没有找到这个问题,所以我问了重复。无论如何,@JPG 发布的一个答案似乎比这里的大多数答案都要好。我不知道如何正确处理这个(我是堆栈溢出的新手),所以这是我的问题stackoverflow.com/questions/52114443/…
标签: django rest django-rest-framework