장고에서 일대 다 관계로 쿼리를 수행하는 가장 좋은 방법은 몇 가지 문제가 있습니다. 최상의 예를 들어 설명 :Django에서 OneToMany 쿼리
항목에는 여러 특성이있을 수 있습니다. 속성이 항목에만 적용되지만 ManyToMany는 여기에 적합하지 않습니다. name = a1 인 속성을 가진 모든 항목을 어떻게 찾을 수 있습니까? 그러나 name = a2 속성도 갖고 있습니까? 이 같은
뭔가 :
a1_objects = Attribute.objects.filter(name="a1").values("item__id")
a2_objects = Attribute.objects.filter(name="a2").values("item__id")
#Take the intersection (does this method of taking an intersection work?)
ids_with_a1_and_a2 = [id for id in a1_objects if id in a2_objects]
#Get item objects with those ids
results = Item.objects.filter(id__in = ids_with_a1_and_a2)
는 확실히 내 제안 된 방법보다 더 좋은 방법은? 그것은 나에게 효율적으로 보이지 않는다.
귀하의 결과 __always__ 것 빈의 검색어합니다. 아이템 이름이'a1'과'a2' 인 모든 애트리뷰트 이름을 얻으시겠습니까? – karthikr
Heh. 먼저 제목을 "장고에서 너무 많은 검색어 중 하나"라고 읽었습니다. 이렇게 많은 쿼리를하지 않는 것이 좋습니다! ;-) –