我有一個模型是這樣的:一個關於Q對象鍵和外鍵拼圖
class Thing(models.Model):
property1 = models.IntegerField()
property2 = models.IntegerField()
property3 = models.IntegerField()
class Subthing(models.Model):
subproperty = models.IntegerField()
thing = modelsForeignkey(Thing)
main = models.BooleanField()
我有傳遞的過濾器列表的功能,其中每個過濾器的形式爲{「類型':某事,'價值':x}。此功能需要返回的結果集取與所有的過濾器一起:
final_q = Q()
for filter in filters:
q = None
if filter['type'] =='thing-property1':
q = Q(property1=filter['value'])
elif filter['type'] =='thing-property2':
q = Q(property2=filter['value'])
elif filter['type'] =='thing-property2':
q = Q(property3=filter['value'])
if q:
final_q = final_q & q
return Thing.objects.filter(final_q).distinct()
每個Subthing有一個布爾屬性「主」。 Every Thing有1個,只有1個主要==真的東西。
我現在需要添加過濾器,返回所有有Subthing其中main==True
和subproperty==filter['value']
我能做到這一點的Q
對象,我構建的一部分的東西呢?如果不是如何呢?在我的新過濾器之前得到的查詢集可能非常大,所以我想要一個不涉及循環結果的方法。
有一個錯字,應該是models.ForeignKey() – Evgeny 2009-11-28 23:45:54