私のモデルでは、私はフィールドのすべての組み合わせを書き込み、それらをフィルタリングすることなく、モデルのすべての5つのフィールド上の単一の条件を適用する簡単なクエリセットを必要とするDjangoの単一の条件に基づいて複数のフィールドをフィルタリングするクエリセットを作成するには?
class TestModel(models.Model)
field1 = models.IntegerField()
field2 = models.IntegerField()
field3 = models.IntegerField()
field4 = models.IntegerField()
field5 = models.IntegerField()
です。
は、たとえば、私は2つ以上のフィールド
TestModel.objects.filter(two_or_more_fields=None)
私は任意の2つ以上のフィールドでのクエリセットを見つけるために、5つのフィールドのすべての組み合わせを書きたくないのなしのチェックの条件を適用したいですなし。言い換えれば、よりこれを実現するためのより良い方法があります:
from django.db.models import Q
TestModel.objects.filter(
#condition for exactly 2 None
Q(field1=None & field2=None) |
Q(field2=None & field3=None) |
Q(field3=None & field4=None) |
Q(field4=None & field5=None) |
Q(field5=None & field1=None) |
#condition for more than 2 None
Q(field1=None & field2=None & field3 = None) |
'''''
.
.
#so on to cover all possible cases of any two or more fields as None
)
が、私はこれを実現するためのより良いと簡単な方法があるはずだと思います。
これは良い提案ですが、私は私の場合でモデルを変更することはできません。 – javed