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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.