Как обновить вложенный объект в Django?

Я пытаюсь обновить вложенный объект в Django, но сталкиваюсь с ошибкой, когда id вложенного объекта уже существует. У меня есть две модели:

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

Так я вообще не попадаю в update-метод, когда передаю события в PUT -payload, что я делаю не так?

Вернуться на верх