Python Django泛型关系不起作用

Python Django泛型关系不起作用,python,django,Python,Django,因此,在向我的一个模型类添加或删除GenericRelation之后,什么也没有发生 我尝试进行迁移,它告诉我没有检测到任何更改。所以一定是出了什么问题,因为它应该访问数据库并尝试应用一些更改 我遵循了Django的例子,但我无法使这种关系起作用 class Person(models.Model): identity = models.CharField(max_length=13, verbose_name="ID") name = models.CharField(max_

因此,在向我的一个模型类添加或删除GenericRelation之后,什么也没有发生

我尝试进行迁移,它告诉我没有检测到任何更改。所以一定是出了什么问题,因为它应该访问数据库并尝试应用一些更改

我遵循了Django的例子,但我无法使这种关系起作用

class Person(models.Model):
    identity = models.CharField(max_length=13, verbose_name="ID")
    name = models.CharField(max_length=255, verbose_name="Name")
    board = GenericRelation('second_app.BoardMember') #Second Try

    def __unicode__(self):
        return self.identity

    class Meta:
        verbose_name = "Person"
        verbose_name_plural = "People"

class Student(Person):
    class Meta:
        proxy = True

class Parent(Person):
    class Meta:
        proxy = True

class Teacher(Person):
    board = GenericRelation('second_app.BoardMember') # first try
    class Meta:
        proxy = True
在不同的应用程序上,我有以下型号

class BoardMember(models.Model):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id', for_concrete_model=False)
    responsabilities = models.CharField(max_length=255)
首先,我尝试在代理模型上设置泛型关系。什么也没发生,然后我试着把它设置在主要人物类上。没有什么。这就是我在外壳上测试关系所做的

>>>from first_app.models import Teacher
>>>from second_app.models import BoardMember
>>>teacher = Teacher(identity='123456', name='Fermin Arellano')
>>>teacher.save()
>>>bm = Boardmember(content_object=teacher,responsabilities='Check stuff')
>>>bm.save()
>>>teacher.board.all()
[]
下面这个例子:

预期结果应该是:
[]


我做错什么了吗?任何地方都没有显示错误。数据保存正确,在我的数据库中成功创建了教师和BoardMemer对象

我刚刚从GenericForeignKey声明中删除了
for_concrete_model=False
。尽管在Django的文档中,它明确指出为了使用ProxyModels,必须将其设置为false

现在一切正常

编辑。

我刚刚意识到问题依然存在。在进一步调查之后,我注意到为了获得工作的通用关系,我需要保存Person模型的
content\u type\u id
,而不是代理模型。这就是为什么删除for_concrete_model参数会有所帮助,因为这样我告诉Django使用parents内容类型,结果很好。有趣的是,如果我做了下面的事情,即使我有个人的
content\u type\u id
,关系仍然有效

Teacher.objects.filter(board__isnull=False)
这将返回董事会中的所有教师


这真是令人困惑,如果你能解释一下这一混乱局面,我将非常感谢。

你的观察,即
generirelation
不会加强代理模型上的删除,但会加强具体模型上的删除,这是正确的。我创建了此票据: