2014-01-05 23 views
0

我正在做一個原始查詢,其中我從表中選擇ID的結果是這樣的:的Python/Django的object.filter(pk__in = variable_list)

[(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) 

這導致以下錯誤:argument must be a string or a number, not 'list'

請指教

回答

1

的問題是,你有一個元組列表,整數的不是「原始」名單,因爲fetchall()返回整個行,而不是單一的列。試試:

pk__in=[p[0] for p in property_list] 
相關問題