#django #django-serializer
#джанго #джанго-сериализатор
Вопрос:
Я пытаюсь обновить вложенный объект в Django, но столкнулся с ошибкой с уже существующим идентификатором подобъекта. У меня есть эти две модели:
class Plan(models.Model): planId = models.CharField(primary_key=True, max_length=100, unique=True) name = models.CharField(max_length=200) class PlanEvent(models.Model): plan = models.ForeignKey(Plan, on_delete=models.CASCADE) id = models.CharField(primary_key=True, max_length=100, unique=True, blank=False, null=False) done = models.BooleanField() title = models.CharField(max_length=100, blank=True)
У меня есть метод обновления PlanSerializer
, и он работает, если я отправляю запрос PUT с пустым events
списком, но если я включаю некоторые события, которые хочу обновить, я получаю сообщение об ошибке:
{ "events": [ { "id": [ "plan event with this id already exists." ] } ] }
Это мой PlanSerializer
метод обновления:
class PlanSerializer(serializers.ModelSerializer): events = PlanEventSerializer(many=True) class Meta: model = Plan fields = ('planId', 'name', 'events') def update(self, instance, validated_data): events_validated_data = validated_data.pop('events') events = (instance.events.all()) events = list(events) instance.name = validated_data.get('name', instance.name) instance.save() for event_data in events_validated_data: event = events.pop(0) event.done= event_data.get('done', event.done) event.title = event_data.get('title', event.title) event.save() return instance
Итак, я вообще не добираюсь до метода обновления, когда передаю события в полезную нагрузку PUT, что я делаю не так?
Комментарии:
1. Вы должны задать свой новый вопрос в новом вопросе, а не редактировать текущий.