Django:删除带有'through'多对多字段的对象时出现完整性错误

0 投票
1 回答
1282 浏览
提问于 2025-04-16 17:03

我在使用一个中间表来处理多对多的关系:

class EmailType(models.Model):
    name = models.CharField(max_length=200)

class Email(models.Model):        
    email = models.EmailField(max_length=200)
    type = models.ForeignKey(EmailType,blank=True,null=True,default='')

class EntityEmail(Email):        
    entity = models.ForeignKey("Entity")

class Entity(models.Model):
    name = models.CharField(max_length=200)
    emails = models.ManyToManyField(Email,through="EntityEmail")

当我创建一个新的实体并分配一个新的邮箱时,一切都很顺利。但是如果我想从管理界面删除这个实体,就会出现一个完整性错误。

无法删除或更新父行: 外键约束失败 (thedb.theapp_entityemail, 约束 entity_id_refs_id_28f53d76782ad9c6 外键 (entity_id) 参考 theapp_entity (id))'

如果我先删除 EntityEmail,就没问题。

有没有办法避免这个问题?我在使用 django 1.2,不能使用 1.3 的 on_delete 选项。

1 个回答

0

你可以在实体模型上重写 Model.delete() 方法,这样就能让它的功能和 on_delete 一样,如果这正是你想要的效果。

撰写回答