2013-10-03 32 views
0

我的模型的定義是這樣的:如何使用外鍵對模型進行Q查詢?

class Model2(models.Model): 
    id = models.IntegerField(primary_key=True) 
    name = ... 

class Model1(models.Model): 
    id = models.IntegerField(primary_key=True) 
    model2 = models.ForeignKey(Model2, to_field='id', db_column='model2') 

的問題是我不知道如何進行或與查詢集查詢。

qs = Model1.objects.filter(Q(model2.id__icontains=search) | Q(id__icontains=search)) 

我得到

關鍵字不能表達

所以,問題是我怎麼可以參考Q中查詢相關模型的領域?由於

回答

0

這應該工作:

qs = Model1.objects.filter(Q(model2__id=search) | Q(id=search)) 

我會再次執行,如果你正在尋找id__icontains

如果你搜索1,那麼它會尋找111121166。 ..,(其中有1的任何id)這可能不是你想要的。

特別指出你的錯誤,

Q(model2.id__icontains=search) 

應該

Q(model2__id__icontains=search) 
+0

非常感謝你。 – Ladiko