Django 1.10:使用GenericRelation删除模型时出错

时间:2016-12-15 09:24:45

标签: django generic-relations django-generic-relations

在我的项目中,我使用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上所有看似相关的问题都与抱怨级联删除没有发生的人有关......但我甚至无法进行顶级删除。

使用这些模型的所有内容一直运行良好...除了从管理员删除这个从一开始就没有用过的问题。我在这里缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

您的A模型与B没有关系,它与ABMapping有关系。所以A中的关系应该是#+BEGIN_SRC puppet file{'/etc/motd': ensure => present, content => 'Bienvenue !', } #+END_SRC

存在使用另一个模型作为连接表的多对多关系的概念,但是需要具有通过= ABMapping参数的实际ManyToManyField,以及两个,我不相信可以如果两个外键中的一个是GenericForeignKey,则工作。