django - bộ lọc truy vấn trên nhiều người đang trống


96

Trong Django có một cách để lọc trên một trường manytomany trống hoặc rỗng.

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)

Câu trả lời:


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

43
Và ngược lại là có thể vớiTestModel.objects.exclude(manytomany=None)
Alex L

Có cách nào để truy vấn các đối tượng không liên quan / không được đính kèm trong 'AnotherModel' không? Đang cố gắng làm sạch nhiều mô hình.
bozdoz

2
Sử dụng AnotherModel.objects.filter(testmodel_set=None)làm việc cho tôi. Nếu bạn đang sử dụng một tên có liên quan , tất nhiên bạn nên sử dụng tên đó để thay thế.
Felipe

6

Thêm vào câu trả lời @Bernhard, có thể đạt được giải pháp khả thi khác bằng cách sử dụng Q()đối tượng.

from django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

Phủ định:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.