django - manytomany'deki sorgu filtresi boş


96

Django'da çok sayıda alanı boş veya boş olarak filtrelemenin bir yolu var.

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)

Yanıtlar:


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

43
Ve tersi mümkündürTestModel.objects.exclude(manytomany=None)
Alex L

'AnotherModel'de alakasız / bağlanmamış nesneleri sorgulamanın bir yolu var mı? Çoktan çoğa modeli temizlemeye çalışıyorum.
bozdoz

2
Kullanma AnotherModel.objects.filter(testmodel_set=None)benim için çalıştı. İlgili bir ad kullanıyorsanız , elbette bunun yerine onu kullanmalısınız.
Felipe

6

@Bernhard cevabına ek olarak, Q()nesne kullanılarak başka olası çözümler elde edilebilir .

from django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

Olumsuzluk:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.