django - filter kueri di manytomany kosong


96

Di Django adakah cara untuk memfilter pada banyakbanyak bidang yang kosong atau nol.

class TestModel(models.Model):
    name = models.CharField(_('set name'), max_length=200)
    manytomany = models.ManyToManyField('AnotherModel', blank=True, null=True)

print TestModel.objects.filter(manytomany__is_null=True)

Jawaban:


152
print TestModel.objects.filter(manytomany=None)

43
Dan kebalikannya dimungkinkan denganTestModel.objects.exclude(manytomany=None)
Alex L

Apakah ada cara untuk menanyakan objek yang tidak terkait / tidak terikat di 'AnotherModel'? Mencoba membersihkan banyak model.
bozdoz

2
Menggunakan AnotherModel.objects.filter(testmodel_set=None)berhasil untuk saya. Jika Anda menggunakan nama terkait , Anda harus menggunakannya.
Felipe

6

Menambah jawaban @Bernhard, solusi lain yang mungkin dapat dicapai dengan menggunakan Q()objek tersebut.

from django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

Penyangkalan:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.