过滤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}}属性设置为不同模型的实例?