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)
John
sumber

Jawaban:

152
print TestModel.objects.filter(manytomany=None)
Bernhard Vallant
sumber
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)
Rakmo
sumber