Tôi có cấu trúc này của các đối tượng mô hình:Lọc Nhiều người đến Nhiều mối quan hệ trong Django
Class A:b = models.ManyToManyField("B")
Class B:
c = models.ForeignKey("C")
d = models.ForeignKey("D")
Loại C:
d = models.ForeignKey("D")
Đây là truy vấn Tôi đang cố gắng để có được:
Tôi muốn nhận tất cả các đối tượng B của đối tượng A, sau đó trong mỗi đối tượng B để thực hiện so sánh giữa đối tượng D và đối tượng cd .
Tôi biết rằng chỉ cần di chuyển trên bộ sưu tập B với vòng lặp và thực hiện so sánh này. Nhưng tôi lặn vào mối quan hệ ManyToMany, sau đó tôi nhận thấy tôi có thể làm như sau:
bObjects = A.objects.all().b
q = bObjects.filter(c__d=None)
này đang làm việc, nó mang lại cho tôi tất cả các đối tượng c với None
d lĩnh vực. Nhưng khi tôi thử như sau:
q = bObjects.filter(c__d=d)
Nó mang lại cho tôi d không xác định, nhưng d là một đối tượng như c trong đối tượng B.
gì có thể là vấn đề? Tôi sẽ rất vui nếu bạn đề xuất thêm cách để thực hiện tác vụ này. Tôi thường cố gắng viết truy vấn của mình trong một thao tác đơn lẻ với nhiều đối tượng phụ và không sử dụng vòng lặp.
tất cả abc này là khó hiểu bạn có thể không chọn tên tốt hơn: D? – maazza