django - ตัวกรองแบบสอบถามในหลาย ๆ ประเทศว่างเปล่า


96

ใน Django มีวิธีกรองฟิลด์จำนวนมากที่ว่างเปล่าหรือเป็นโมฆะ

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)

คำตอบ:


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

43
และผกผันเป็นไปได้ด้วยTestModel.objects.exclude(manytomany=None)
Alex L

มีวิธีค้นหาวัตถุที่ไม่เกี่ยวข้อง / ไม่ได้แนบใน 'AnotherModel' หรือไม่? พยายามล้างหลาย ๆ รุ่น
bozdoz

2
การใช้AnotherModel.objects.filter(testmodel_set=None)งานสำหรับฉัน หากคุณใช้ชื่อที่เกี่ยวข้องคุณควรใช้ชื่อนั้นแทน
Felipe

6

การเพิ่มคำตอบ @Bernhard วิธีแก้ปัญหาอื่น ๆ ที่เป็นไปได้สามารถทำได้โดยใช้Q()วัตถุ

from django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

การปฏิเสธ:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.