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'