django model filter is null




Filtro per nomi vuoti o NULL in un set di query (4)

Da Django 1.8,

from django.db.models.functions import Length

Name.objects.annotate(alias_length=Length('alias')).filter(alias_length__gt=0)

Ho first_name, last_name e alias (opzionale) che ho bisogno di cercare. Quindi, ho bisogno di una query per darmi tutti i nomi che hanno un set di alias.

Solo se potessi fare:

Name.objects.filter(alias!="")

Quindi, qual è l'equivalente di quanto sopra?


In primo luogo, i documenti Django raccomandano vivamente di non utilizzare valori NULL per i campi basati su stringhe come CharField o TextField. Leggi la documentazione per la spiegazione:

https://docs.djangoproject.com/en/dev/ref/models/fields/#null

Soluzione: credo che si possano anche concatenare metodi su QuerySet. Prova questo:

Name.objects.exclude(alias__isnull=True).exclude(alias="")

Questo dovrebbe darti il ​​set che stai cercando.


Puoi semplicemente fare questo:

Name.objects.exclude(alias="")

Le risposte sembrano danzare intorno a questo, ma è davvero così semplice. filter utilizzato per la corrispondenza e l' exclude è quello di far corrispondere tutto tranne quello che specifica.


questo è un altro modo semplice per farlo.

Name.objects.exclude(alias=None)




null