3

djangoでは、他のオブジェクトの属性に応じて、データベースからオブジェクトを取得したいと思います。他のオブジェクトの1つが存在しない場合、クエリの結果に影響を与えることはありません。コードは次のようになります。

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オブジェクトに似たものはありますか?

それとも私の問題を解決するためのより良い方法はありますか?

4

2 に答える 2

3
qList = []
try:
  objectA = ...
  qList.append(Q(foo=objectA.bar))
except ...:
  ...
 ...

result = MyOtherMdel.objects.filter(reduce(operator.or_, qList),
  **other_filter_conditions)
于 2011-03-17T16:30:25.707 に答える
0

クエリセットには、常にEmptyQuerysetを返すnone()メソッドがあります。Qオブジェクトに似たものはありますか?

Q(pk = -1)

于 2011-03-17T20:15:30.223 に答える