sql >> Databáze >  >> RDS >> Mysql

Dotaz, když parametr není žádný django

Nevím, jestli dostanu vaši otázku, ale

Model.objects.filter(x=x, y__isnull = False, z=z)

vám dává sadu dotazů, kde je y sloupec nemá hodnotu null (IS NOT NULL ).

Zde příslušnou dokumentaci.

EDIT:Zkontrolujte, zda je y None, a sestavte sadu dotazů dynamicky:

if y is None:
    qs = Model.objects.filter(x=x).filter(z=z)
elif z is None:
    qs = Model.objects.filter(x=x).filter(y=y)
...

Pokud existuje příliš mnoho argumentů k řešení, můžete použít něco takového; za předpokladu, že x , y , z jsou uloženy ve slovníku your values :

your_values = { 'x' : 'x value', 'y' : 'y value', 'z' : 'value'}
arguments = {}
for k, v in your_values.items():
    if v:
        arguments[k] = v

Model.objects.filter(**arguments)


  1. hodnota je příliš dlouhá pro typ znaku proměnlivé (N)

  2. Závažná chyba:operátor [] není pro řetězce podporován

  3. Proč by MySQL provedlo návrat None?

  4. Význam údržby na MSDB