Python Django ORM无法识别嵌套ON语句中的具体继承

Python Django ORM无法识别嵌套ON语句中的具体继承,python,sql,django,django-orm,django-taggit,Python,Sql,Django,Django Orm,Django Taggit,定义一个定制的Django用户并结合Django taggit我遇到了一个ORM问题,Django管理过滤器中也有这个问题 注意:我正在使用这个片段: 现在,当我使用django ORM为MyUser筛选某些标记时,例如 MyUser.objects.filter(tags__in=tags) 我得到以下错误: (1054, "Unknown column 'myapp_user.id' in 'on clause'") 打印的原始查询: SELECT `myproject_user`.`i

定义一个定制的Django用户并结合Django taggit我遇到了一个ORM问题,Django管理过滤器中也有这个问题

注意:我正在使用这个片段:

现在,当我使用django ORM为MyUser筛选某些标记时,例如

MyUser.objects.filter(tags__in=tags)
我得到以下错误:

(1054, "Unknown column 'myapp_user.id' in 'on clause'")
打印的原始查询:

SELECT `myproject_user`.`id`, `myproject_user`.`first_name`, `myapp_user`.`user_ptr_id`, `myapp_user`.`subscription` 
FROM `myapp_user` INNER JOIN `myproject_user` 
ON ( `myapp_user`.`user_ptr_id` = `myproject_user`.`id` ) 
INNER JOIN `taggit_taggedtag` 
ON ( `myapp_user`.`id` = `taggit_taggedtag`.`object_id` 
AND (`taggit_taggedtag`.`content_type_id` = 31)) 
WHERE (`taggit_taggedtag`.`tag_id`) 
IN (SELECT `taggit_tag`.`id` FROM `taggit_tag` WHERE `taggit_tag`.`id` IN (1, 3)))

将第二部分中的“id”更改为“user_ptr_id”会使查询生效有没有办法用Django ORM强制执行此操作?

问题是您无法在标记列表中查找id;您需要在ID列表中查找ID。要解决此问题,请构建一个包含所有要筛选的ID的值列表,然后将该列表传递给原始查询

id_list = Tag.objects.all().values_list("id")
MyUser.objects.filter(tags__in=id_list)
如果MyUser和Tag之间存在多对多关系,您也可以使用多对多管理器代替整个管理器:

MyUser.tags.all()

您可以添加模型代码吗?您需要提供更多信息。如果我们能看到你的模型是如何定义的,那会有所帮助。没有办法用提供的信息来回答这个问题。你必须提供更多的代码。
MyUser.tags.all()