2017-04-19 6 views
0

私はその属性でフィルタリングしたいモデルを持っていますa。モデルには別の属性bもあります。私はaが0であるか、またはab属性の値を持つエントリをフィルタリングしようとしています(明らかに各行に対して)。別の列の値でどのようにフィルタリングできますか?ここで Django QuerySet:別のフィールドの値でフィルタリングします

は、私が試したものであり、不足している作品:

MyModel.objects.filter(Q(a=0) | Q(a=???)) # ??? is to be the value of the `b` column 

私はDjangoの1.4を使用していますが、私はそれはもはやサポートされている古いバージョンである知っているが、残念ながらアップグレードを実行するまでではありません私。

+0

モデルを変更するオプションはありますか? –

+0

F式は1.4で利用可能ですが、それはあなたが探しているものです。 –

答えて

2

は、私はあなたのQオブジェクトにF expressionを使用することができると思いますアップグレードを今すぐスケジュールしてください。そうしないと、他の機能やセキュリティ修正が欠落してしまいます。

+0

ハァッ、何らかの理由で私は最近、F式が導入されたと思った。ありがとうございました。私が言及したように、アップグレードすることは絶対に私にはあてはまらない。 – dabadaba

1

2つのフィールドを比較するためにFモデルを使用できます。私もあなたをお勧めします

MyModel.objects.filter(Q(a=0) | Q(a=F('b'))) 

from django.db.models import F 
MyModel.objects.filter(a__exact = F('b')) 

だからあなたの関節のクエリのためにあなたがのようなものを使用することができ、

MyModel.objects.filter(Q(a=0) | Q(a__exact=F('b'))) 
+0

2つの値が同じかどうかをチェックしますか? –

+0

ああ、あなたはb属性に等しい価値があることを意味しました。申し訳ありませんが、あなたの質問からはっきりしていなかったので、私が何ができるかを見せてください。 – Osiris92

+0

回答する前に質問をよくお読みください。 – Iqbal

関連する問題