Boş için filtreleme ya da bir queryset BOŞ isimler
Aramak için ihtiyacım olan Adı, Soyadı ve Takma (isteğe bağlı). Yani, benim bir diğer ayarlanmış olan tüm isimleri bir sorguya ihtiyacım var.
Eğer yapabilseydim:
Name.objects.filter(alias!="")
Yukarıdaki karşılığı nedir?
CEVAP
Bunu yapmak için:
Name.objects.exclude(alias__isnull=True)
Null değerleri dışlamak gerekirveboş dizeler, bunu yapmak için tercih edilen yolu birlikte çok gibi: koşullar zinciri
Name.objects.exclude(alias__isnull=True).exclude(alias__exact='')
Bu yöntemler birlikte temelde her koşul bağımsız olarak denetler zincirleme: yukarıdaki örnekte, alias
da boş . bulunduğu satır hariç ^em>ya-boş, boş alias
bir saha var Name
tüm nesneler, bu yüzden boş bir dize. Oluşturulan SQL gibi görünecektir:
SELECT * FROM Name WHERE alias IS NOT NULL AND alias != ""
Ayrıca karşılayan tek nesneleri sağlayacak exclude
, tek bir çağrı birden fazla bağımsız değişkenler iletebilirsinizherdurumu hariç
Name.objects.exclude(some_field=True, other_field=True)
Burada, some_field
satırlarveother_field
doğru her iki alanda da doğru olmayan tüm satırları böylece dışlanmış. Oluşturulan SQL kodu biraz bu gibi görünecektir:
SELECT * FROM Name WHERE NOT (some_field = TRUE AND other_field = TRUE)
Eğer mantığınız bu daha karmaşık ise, bunun yerine, sadece son çare olarak tavsiye ederim, ancak böyle bir şey, olabilir:
from django.db.models import Q
Name.objects.exclude(Q(alias__isnull=True) | Q(alias__exact=''))
Daha fazla bilgi için this page ve Django belgeleri this page bkz.
Nasıl filtreleme/arama Dinlendirici bi...
Nasıl YA durumda queryset gerçekleştir...
Nasıl iki yönlü angular.js filtreleme ...
Django hızlı bir queryset gelen ilk ne...
Nasıl gerçek zamanlı bir arama gerçekl...