Python/Django object.filter(pk__in=variable_list)

标签 python django filter rawsql

我正在进行原始查询,其中从表中选择 id 的结果如下所示:

[(517L,), (519L,), (526L,), (537L,), (668L,), (670L,), (671L,), (672L,), (673L,)] 

我需要将这些 id 与 __in 过滤器一起使用来接收正确的对象,这是我的代码 注意我在这里编写的原始查询是一个虚拟查询,我的真实查询很复杂,这就是为什么我必须使用原始查询,

from django.db import connection, transaction
cursor = connection.cursor()
cursor.execute("SELECT id FROM table1 WHERE rule=1)
property_list= cursor.fetchall()
object_list = table1.objects.filter(pk__in=property_list)

这会导致以下错误:参数必须是字符串或数字,而不是“列表”

请指教

最佳答案

问题是您有一个元组列表,而不是一个“原始”整数列表,因为 fetchall() 返回整行,而不是单个列。尝试:

pk__in=[p[0] for p in property_list]

关于Python/Django object.filter(pk__in=variable_list),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20934922/

相关文章:

从两个选项中获取一个强制参数的 Python 函数

python - __getattr__ 在实现 __setattr__ 时抛出最大递归错误

python - 如何在 Keras 中使用 LSTM 层恢复保存的模型

swift - 过滤 View Controller

PHP/MySQL 过滤数据时遇到问题

python - 让 Pyplot 窗口显示为 Windows 7 中的最顶层窗口

python - Django 模型继承 - 只需要查询中的父类实例

python - 如何在不单击 "CTRL + C"的情况下通过 cmd 中的命令停止 Django 服务器?

django - 动态更新 ModelForm 中 ModelMultipleChoiceField 的查询集

mysql - 过滤后如何连接两个表