class MyFilter(django_filters.FilterSet):
class Meta:
model = MyModel
fields = {
'field': ['exact', 'isnull'],
}
これをフィルタリングするにはどうすればよいですか?& field__isnull = True ???Django-Filterを使用してOrクエリを実行する方法
class MyFilter(django_filters.FilterSet):
class Meta:
model = MyModel
fields = {
'field': ['exact', 'isnull'],
}
これをフィルタリングするにはどうすればよいですか?& field__isnull = True ???Django-Filterを使用してOrクエリを実行する方法
有用な例を、以下のことができます。
def filter_field_or_null(queryset, value):
return queryset.filter(
Q(field=value) | Q(field__isnull=True)
)
class MyFilter(django_filters.FilterSet):
field_or_null = django_filters.ModelChoiceFilter(
queryset=SomeModel.objects.all(),
action=filter_field_or_null
)
class Meta:
model = MyModel
私は混乱しています、あなたの質問に実行したり、クエリする方法です、しかし、あなたの例では「&」である(これは通常のANDを意味する)あなたが作るOR条件にしたい場合は、Qオブジェクトを使用することができ
など:
Q(field=1) | Q(field__isnull=True)
詳細については、https://docs.djangoproject.com/en/1.10/ref/models/querysets/#django.db.models.Qを参照してください。
あなたの参照の使用Django Filterドキュメント
については
は、カスタムフィールドを追加することによってそれを解決
from django.db import models
import django_filters
class Mymodel(models.Model):
field1 = models.CharField(max_length=255)
field2 = models.IntegerField(null=True)
class MyFilter(django_filters.FilterSet):
field1__iexact = django_filters.CharFilter(lookup_expr='iexact')
field1__isnull = django_filters.CharFilter(lookup_expr='isnull')
class Meta:
model = Product
fields = ['field1']
私の質問は、同じフィールド上で異なるフィルタを実行することです。 –
@vaibhav jain編集された回答を参照してください –
もし私が '?field__iexact =
これは、「Django-Filter」を参照してください。 –
@vaibhavjain、申し訳ありませんが、私はあなたのポイントを正しく取得していませんでした...また、OR条件を組み合わせるためにQオブジェクトを使用する必要があります... – zhaorong
@zhaorong - OPでは完全にはっきりしませんが、 '?field = 1&field__isnull = True 'はURLクエリ文字列です。 '&'はキーと値のペアの間の単なるセパレータです。 – Sherpa