Django foreign key constraint on drop even thou on_delete=CASCADE

Я не вижу, что в этом плохого,

class Agenda(models.Model):
    ...

class AgendaResource(PolymorphicModel):
    agenda = models.ForeignKey(
        Agenda, related_name="resources", on_delete=models.CASCADE
    )
    comment = models.TextField(null=True)

class PreemptiveMeasureResource(AgendaResource):
    resource = models.ForeignKey(
        PreemptiveMeasure, on_delete=models.SET_NULL, null=True
    )
    ...

Когда я пытаюсь удалить повестку дня, т.е. Agenda.objects.get(pk=2).delete() у меня возникает такая проблема:

update or delete on table "school_health_agendaresource" violates foreign key constraint "school_health_preemp_agendaresource_ptr_i_222e2e2c_fk_school_he" on table "school_health_preemptivemeasureresource"
DETAIL:  Key (id)=(2) is still referenced from table "school_health_preemptivemeasureresource"

Что именно я не понимаю? Я предполагаю, что это как-то связано с наследованием?

Это проблема с django-polymorphic, см. проблемы здесь, здесь и здесь.

В качестве обходного пути вы можете попробовать добавить в вашу модель AgendaResource следующее:

class AgendaResource(PolymorphicModel):
    ...
    non_polymorphic = models.Manager()

    class Meta
        base_manager_name = 'non_polymorphic'
Вернуться на верх