在django我想從數據庫中檢索對象取決於其他對象的屬性。如果其他對象之一不存在,則不應影響查詢的結果。該代碼是這樣的:是否有辦法構造一個表示EmptyQueryset的Q對象,即總是返回一個空結果?
from django.db.models import Q
try:
objectA = MyModel.objects.get(id = idA)
qA = Q(foo = objectA.bar)
except MyModel.DoesNot.Exist:
qA = Q(???)
try:
objectB = MyModel.objects.get(id = idB)
qB = Q(abc = objectB.xyz)
except MyModel.DoesNot.Exist:
qB = Q(???)
result = MyOtherModel.objects.filter(qA | qB, **other_filter_conditions)
對於查詢集存在none()
方法,它總是返回EmptyQueryset。 Q對象有類似的東西嗎?
或者有沒有更好的方法來解決我的問題?
什麼是'MyModel'和'MyOtherModel'之間的關係。這不僅僅是一個'mymodel__foo = idA'或者'mymodel__abc = idB'種查詢嗎? – 2011-03-17 17:43:18
@ S.Lott:不,Q對象比例子中要複雜得多。 – jammon 2011-03-18 03:30:55
這並沒有真正回答這個問題。 'MyModel'和'MyOtherModel'之間有什麼關係?儘管過濾器可能很複雜,但也可以使用http://docs.djangoproject.com/en/1.2/topics/db/queries/#spanning-multi-valued-relationships技術稍微簡化。 – 2011-03-18 09:46:19