Django ORM - 跨多个模型按GenericRelation过滤

时间:2017-12-25 13:52:50

标签: django django-generic-relations

过滤Django GenericRelations已于4年前通过https://code.djangoproject.com/ticket/22207实施,现在支持从相关模型中过滤:

issues = queryset.filter(generic_project__offers__members__in=[request.user])

然后:

project__offers_members

我们不能只使用related_query_name - 它会失败,因为Django不会反向解析通用外键。

但是,如果我们有另一个具有相同class JiraProject(models.Model): issues = GenericRelation( Issue, related_query_name='generic_project', content_type_field='project_content_type', object_id_field='project_id', ) 的项目模型会发生什么?

GenericRelation

我尝试在所有不同的related_query_name模型(即Gitlab Project,Jira Project等)上设置project相同的related_query_name。然而,这导致Django只选择了第一个'项目模型。与所有后续项目模型的通用关系将被忽略,因此,实例设置的问题不属于第一个'项目模型被忽略,不属于查询集。

我认为当多个GenericRelations具有相同的issues值集时,Django应该支持这个或发出警告或错误(可能在执行makemigrations命令时)。

如何在project内有效地过滤{{1}}属性设置为不同模型的实例?

0 个答案:

没有答案