Город не является действительной моделью для пользователя
Я расширил свою пользовательскую модель пользователя, чтобы включить поля; город и страна. Проблема в том, что когда я делаю GET
запрос к соответствующей конечной точке, я получаю ошибку
Field name `city` is not valid for model `User`.
Это мой код, начиная с urls.py
router.register(r'users', views.UserViewSet)
...
urlpatterns = [
path('', include(router.urls)),
UserViewSet:
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all().order_by('-date_joined')
#changed name from UserSerializer to RegisterSerializer
serializer_class = RegisterSerializer
@action(detail=True, methods=['POST'])
def set_password(self, request, pk=None):
user = self.get_object()
serializer = PasswordSerializer(data=request.data)
if serializer.is_valid():
user.set_password(serializer.validated_data['new_password'])
user.save()
return Response({'status': 'password set'})
else:
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
и RegisterSerializer:
class RegisterSerializer(serializers.ModelSerializer):
class Meta:
model = User
#removed url from fields
fields = ['username', 'email', 'password', 'first_name', 'last_name', 'city', 'country', 'bio']
extra_kwargs = {
'password': {'write_only': True},
}
def create(self,validated_data):
user = User.objects.create_user(
username=validated_data['username'],
first_name=validated_data['first_name'],
last_name=validated_data['last_name'],
email=validated_data['email'])
user.set_password(validated_data['password'])
user.save()
#added fields from profile
user.profile.city = validated_data['city']
user.profile.country = validated_data['country']
user.profile.bio = validated_data['bio']
return user