Django - Ограничение внешнего ключа не работает при удалении с помощью сквозной модели
Я работаю над REST api, используя Django Rest, и одна конечная точка включает удаление модели Contact, которая может иметь несколько адресов, связанных с ней через ContactAddress через model.
Модель контакта выглядит следующим образом:
class Contact(AuditModel):
contact_id = models.AutoField(primary_key=True)
address = models.ManyToManyField('Address', through='ContactAddress')
name_first = models.CharField(max_length=100)
name_last = models.CharField(max_length=100)
ContactAddress выглядит следующим образом:
class ContactAddress(models.Model):
contact = models.ForeignKey('Contact', on_delete=models.CASCADE)
address = models.ForeignKey('Address', on_delete=models.CASCADE)
is_billing = models.BooleanField(null=True, default=False)
is_shipping = models.BooleanField(null=True, default=False)
А модель адреса выглядит следующим образом:
class Address(AuditModel):
address_id = models.AutoField(primary_key=True)
postcode = models.CharField(max_length=30, blank=True, null=True)
region = models.CharField(max_length=100, blank=True, null=True)
street_line_1 = models.CharField(max_length=500, blank=True, null=True)
street_line_2 = models.CharField(max_length=500, blank=True, null=True)
street_line_3 = models.CharField(max_length=500, blank=True, null=True)
При попытке удалить контакт таким образом contact.delete()
я получаю следующую ошибку MySQL:
django.db.utils.IntegrityError: (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (`mnghub`.`contact_addresses`, CONSTRAINT `contact_addresses_contact_id_cadc11a0_fk_contacts_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `contacts` (`contact_id`))')
Я получаю эту ошибку, несмотря на то, что у контакта нет адресов, связанных с ним. Я предполагаю, что это ограничение связано с тем, что отношение "многие ко многим", но я хочу иметь возможность удалять связанные модели, если они связаны только с одним объектом