在我的项目中,我使用GenericRelation通过第三个模型ABMapping将继承自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的子对象时,我收到错误,"无法解析关键字u' object_id'进入田野。选择是:x,y,id,abmapping。"似乎它试图从ABMapping中获取一个字段,但是在B中找到它。
正如你所看到的,我将我的模型剥离到最低限度,但问题仍然存在。
即使我删除了A子类的对象的所有ABMappings,也会出现同样的问题。
StackOverflow上所有看似相关的问题都与抱怨级联删除没有发生的人有关......但我甚至无法进行顶级删除。
使用这些模型的所有内容一直运行良好...除了从管理员删除这个从一开始就没有用过的问题。我在这里缺少什么?
谢谢!
答案 0 :(得分:3)
您的A模型与B没有关系,它与ABMapping有关系。所以A中的关系应该是#+BEGIN_SRC puppet
file{'/etc/motd':
ensure => present,
content => 'Bienvenue !',
}
#+END_SRC
。
存在使用另一个模型作为连接表的多对多关系的概念,但是需要具有通过= ABMapping参数的实际ManyToManyField,以及两个,我不相信可以如果两个外键中的一个是GenericForeignKey,则工作。