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,我相信它可以工作。
在我的项目中,我通过第三个模型 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,我相信它可以工作。