在本主题中,我找到了一种在不必要时防止级联删除相关对象的好方法。
class Factures(models.Model):
idFacture = models.IntegerField(primary_key=True)
idLettrage = models.ForeignKey('Lettrage', db_column='idLettrage', null=True, blank=True)
class Paiements(models.Model):
idPaiement = models.IntegerField(primary_key=True)
idLettrage = models.ForeignKey('Lettrage', db_column='idLettrage', null=True, blank=True)
class Lettrage(models.Model):
idLettrage = models.IntegerField(primary_key=True)
def delete(self):
"""Dettaches factures and paiements from current lettre before deleting"""
self.factures_set.clear()
self.paiements_set.clear()
super(Lettrage, self).delete()
但是当我们使用带有“related_name”参数的 ForeignKey 字段时,这种方法似乎失败了。在我看来,“clear()”方法可以正常工作并保存“解除关联”对象的实例。但是,在删除时,django 使用了这个对象的另一个记忆副本,因为它仍然与我们试图删除的对象相关联 - 哇哦!...再见亲戚:)
数据库是在我之前构建的,而且方式有点奇怪,所以我无法在合理的时间内逃避这些“相关名称”。有人听说过解决这种麻烦的方法吗?