Я пытаюсь создать свою модель User RESTful через вызовы API Django Rest Framework, чтобы я мог создавать пользователей, а также обновлять их профили.
Однако, когда я просматриваю отдельный процесс проверки с моими пользователями, я не хочу, чтобы пользователи имели возможность обновлять имя пользователя после создания учетной записи. Я попытался использовать 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()]
Спасибо!