Сериализация и создание отношения один-к-одному с родительской_ссылкой true в django и django rest framework
Как сохранить объект с отношением один-к-одному и имеющий parent_link=True с помощью сериализатора. Ниже приведены мои модели и сериализатор, содержащий некоторые поля из реальной модели, которую я хотел реализовать. Я не могу сохранить отношение 'user' в базе данных. Оно выдает ошибку целостности.
class Audit(models.Model):
is_active = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True, null=True)
updated_at = models.DateTimeField(auto_now=True, null=True)
class Meta:
abstract = True
class User(Audit):
class Meta:
db_table = 'user'
email = models.EmailField(unique=True)
password = models.TextField()
is_active = models.BooleanField(default=False)
class UserProfile(User):
class Meta:
db_table = 'user_profile'
user = models.OneToOneField(User, on_delete=models.CASCADE, parent_link=True,
primary_key=True)
address = models.TextField(null=True)
dob = models.DateField()
language = models.CharField(max_length=50, null=True)
class UserProfileSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
fields = ['user', 'address', 'dob', 'language']
Запрашиваемые данные выглядят следующим образом. { "email": "abc@pqr.com", "password": "1234", "dob": "2021-12-11", "language" : "English" }
Вы можете передавать пользователя при сохранении сериализатора :
serializer.save(user=<USER>)
Обратите внимание, что если вы хотите создать пользователя при создании профиля пользователя, вам следует переопределить метод create()
в вашем сериализаторе, сначала создать пользователя, затем создать профиль пользователя и передать ему созданного пользователя