最佳答案
我试图通过 Django RestFramework 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()]
谢谢!