Django:删除具有“通过”多对多字段的对象时的完整性错误

时间:2011-05-05 15:14:23

标签: python mysql django django-models

我在多对多字段中使用直通表:

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")

如果我创建新实体并分配新电子邮件。一切顺利。 但是,如果我想从管理员中删除此实体,则会引发完整性错误。

  

无法删除或更新父行:   外键约束失败   (thedbtheapp_entityemail,   约束   entity_id_refs_id_28f53d76782ad9c6   FOREIGN KEY(entity_id)参考文献   theapp_entityid))'

如果我先删除EntityEmail,一切都会好的。

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

1 个答案:

答案 0 :(得分:0)

您可以覆盖实体模型上的Model.delete()方法以匹配on_delete功能,如果这是您真正想要的。