У объектов пользователя нет профиля атрибутов
Может ли кто-нибудь объяснить мне, почему я получаю эту ошибку.
У меня есть две модели User и Profile с отношениями OnetoOne. models.py
class User(AbstractBaseUser):
phone_number = models.IntegerField(unique=True, verbose_name='phone number')
email = models.EmailField()
class Profile(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,)
first_name = models.CharField(max_length=25)
last_name = models.CharField(max_length=25)
и вот serializer.py
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields =["first_name", "last_name"]
class UserSerializer(serializers.ModelSerializer):
profile = ProfileSerializer()
class Meta:
model = User
fields = ["id", "phone_number", "email", "profile",]
Views.py
class UserDetailsView(generics.RetrieveUpdateAPIView):
serializer_class = UserSerializer
def get_queryset(self):
return User.objects.filter(pk=self.kwargs['pk'])
Вы неправильно написали сериализатор. Модель профиля имеет колонку пользователя & таблица пользователя не имеет колонки профиля и еще одно Используйте OneToOne filed при создании модели профиля против пользователя. Потому что один профиль может содержать одного пользователя.
models.py
class User(AbstractBaseUser):
phone_number = models.IntegerField(unique=True, verbose_name='phone
number')
email = models.EmailField()
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,)
first_name = models.CharField(max_length=25)
last_name = models.CharField(max_length=25)
serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ["id", "phone_number", "email"]
class ProfileSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = Profile
fields =["first_name", "last_name", "user"]
для получения дополнительной информации о вложенном сериализаторе следуйте официальной документации