Я новичок в DRF. Я сохраняю данные о пользователе и его питомцах.
Вот модель
class Users(models.Model):
id = models.AutoField(primary_key=True)
first_name = models.CharField(max_length=255, blank=True)
last_name = models.CharField(max_length=255, blank=True)
job = models.CharField(max_length=255, blank=True)
age = models.CharField(max_length=255, blank=True)
class PetDetails(models.Model):
user = models.ForeignKey(
Users, on_delete=models.CASCADE, blank=True, null=True)
pet_name = models.CharField(max_length=255, blank=True)
pet_color = models.CharField(max_length=255, blank=True)
pet_category = models.CharField(max_length=255, blank=True)
В этом мне нужно сохранить как пользователя, так и его питомцев в один запрос Post.
Итак, я создал такой сериализатор
class UserCreateSerializer(ModelSerializer):
pet = PetDetailCreateSerializer(many=True)
class Meta:
model = Users
fields = ['first_name','last_name','job','age', 'pet']
def create(self, validated_data):
pets_data = validated_data.pop('pet')
user_obj = Users.objects.create(**validated_data)
for pet in pets_data:
PetDetails.objects.create(user=user_obj, **pet)
return user_obj
Проблема, с которой я сталкиваюсь, заключается в том, что один человек может иметь несколько домашних животных.
Например, Джон является пользователем и у него есть два питомца.
Так что в этом случае будет создан объект двух пользователей. Как решить это
ИЛИ есть ли другие методы для обработки этого
Мои представления
class UserCreateView (CreateAPIView):
serializer_class = UserCreateSerializer