Как видно ниже, у меня есть 2 модели, соединенные через посредническую модель, чтобы сформировать отношения ManyToMany. Проблема в том, что, когда я удаляю объект Tender в, получаю эту ошибку.
update or delete on table "tender_details_tender" violates foreign key constraint "user_account_company_tender_id_984ea78c_fk_tender_de" on table "user_account_companyprofile_assignedTenders"
DETAIL: Key (id)=(1) is still referenced from table "user_account_companyprofile_assignedTenders".
Я подумал, что добавление on_delete = models.CASCADE в ForeighKeys (то есть в промежуточной модели) решит эту проблему, но, очевидно, нет.
class CompanyProfile(models.Model):
assignedTenders = models.ManyToManyField(Tender, through='UsersTenders', related_name='UserCompanies')
# connects users to the tenders they match.
class UsersTenders(models.Model):
user = models.ForeignKey(CompanyProfile, on_delete=models.CASCADE, related_name='userTenderLink')
tender = models.ForeignKey(Tender, on_delete=models.CASCADE, related_name='userTenderLink')
sent = models.BooleanField(default=False, blank=False)
class Meta:
unique_together = ("user", "tender")
class Tender(models.Model):
tenderCategory = models.ManyToManyField(Category, blank=False) #this field holds the tender category, e.g. construction, engineering, human resources etc.
tenderProvince = models.ManyToManyField(Province, blank=False) #this is the province the tender was a
Для чего это стоит, я знаю, что вызывает эту проблему, но я не знаю, как ее исправить. Проблема заключается в том, что изначально у меня был ManyToManyField в модели CompanyProfile без аргумента «through», так что, как вы можете себе представить, Django создал свою собственную промежуточную таблицу, которая называется «user_account_companyprofile_assignedTenders», как показано в ошибке. Позже я решил создать свою собственную модель-посредник (т. Е. UsersTenders), потому что мне нужно было дополнительное поле, поэтому я должен был добавить аргумент "through" в моем ManyToManyField (то есть 'assignTenders'). Это работало нормально, но старая промежуточная модель "user_account_companyprofile_assignedTenders" не удалялась автоматически, я предполагаю, что это произошло потому, что перед изменением было создано несколько отношений. Как я могу удалить "user_account_companyprofile_assignedTenders" без дестабилизации моего проекта.