Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kueri ketika parameter tidak ada Django

Saya tidak tahu, jika saya mendapatkan pertanyaan Anda, tetapi

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

memberi Anda queryset, di mana y kolom bukan nol (IS NOT NULL ).

Ini dokumentasi yang relevan.

EDIT:Periksa apakah y adalah Tidak Ada dan buat kumpulan kueri Anda secara dinamis:

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)
...

Jika ada terlalu banyak argumen yang harus dihadapi, Anda bisa menggunakan sesuatu seperti ini; dengan asumsi bahwa x , y , z disimpan dalam kamus 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan ke dalam tabel yang sama memicu mysql

  2. Tidak dapat menemukan indeks FULLTEXT yang cocok dengan daftar kolom (indeks disetel)

  3. Hibernate:apa perbedaan antara MySQLDialect dan MySQLInnoDBDialect?

  4. MySQL COUNT() di beberapa kolom

  5. Transformasi Split Bersyarat:Ekspor Data dari SQL Server ke Oracle dan Database MySQL