python – Django ORM无法识别嵌套的ON语句中的具体继承
发布时间:2020-12-20 13:44:44 所属栏目:Python 来源:网络整理
导读:定义结合 django-taggit的自定义Django用户我遇到了ORM问题,我在django管理过滤器中也有这个问题. 注意:我正在使用此代码段:https://djangosnippets.org/snippets/1034/ # Userid | first_name---------------------------------1 | John2 | Jane# MyUseru
定义结合
django-taggit的自定义Django用户我遇到了ORM问题,我在django管理过滤器中也有这个问题.
注意:我正在使用此代码段:https://djangosnippets.org/snippets/1034/ # User id | first_name --------------------------------- 1 | John 2 | Jane # MyUser usr_ptr_id | subscription --------------------------------- 1 | 'A' 2 | 'B' 现在当我使用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))) 在第二个ON部分将’id’更改为’user_ptr_id’使查询工作有任何方法可以强制使用Django ORM吗? 解决方法
问题是您无法在标签列表中查找ID;您需要在ID列表中查找ID.要解决此问题,请构建要筛选的所有ID的values_list,然后将该列表传递给原始查询.
id_list = Tag.objects.all().values_list("id") MyUser.objects.filter(tags__in=id_list) 如果你在MyUser和Tag之间有很多关系,你也可以使用manytomany管理器代替整个事情: MyUser.tags.all() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |