Django 1.10:删除具有 GenericRelation 的模型时出错

Django 1.10: Error when deleting a model with a GenericRelation

在我的项目中,我通过第三个模型 ABMapping 使用 GenericRelation 将从 class A 继承的模型映射到类型 B 的模型。

models.py:

class A(models.Model):
    b = GenericRelation(B)

    class Meta:
        abstract = True

class ABMapping(models.Model):
    b = models.ForeignKey(B)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

class B(models.Model):
    x = ...
    y = ...

在 Django 管理中,当我尝试删除 A 的子对象时,我得到一个错误,"Cannot resolve keyword u'object_id' into field. Choices are: x, y, id, abmapping."它似乎试图从 ABMapping 中获取一个字段,但在 B 中找到它。

如您所见,我将模型精简到最低限度,但问题仍然存在。

即使我删除了 A 的子对象 class 的所有 ABMappings,也会出现同样的问题。

Whosebug 上所有看似相关的问题都与抱怨级联删除没有发生的人有关...但我什至无法进行顶级删除。

这些模型的所有功能都运行良好了一段时间...除了这个从管理员中删除的问题,这个问题从一开始就没有用过。我在这里错过了什么?

谢谢!

你的A模型和B没有关系,它和ABMapping有关系。所以 A 中的关系应该是 GenericRelation(ABMapping).

存在使用另一个模型作为连接的多对多关系的概念 table,但是其中一个需要一个带有 through=ABMapping 参数的实际 ManyToManyField,第二个我不知道如果两个外键之一是 GenericForeignKey,我相信它可以工作。