1
ManyToMany 필드에 다른 개체가 포함 된 모든 개체를 선택하는 방법을 찾고 싶습니다. 나는 (벗었) 다음 모델django에서 데이터베이스 쿼리 ManyToManyField
class Category(models.Model):
pass
class Picture(models.Model):
categories = models.ManyToManyField(Category)
visible = models.BooleanField()
내가 하나 개 이상의 카테고리에있는 모든 사진을 선택하는 함수를 필요가 있습니다
def pics_in_cats(cat_ids=()):
pass
를하지만 가능하면 검색어 세트의 경우를 반환 할 필요가있는 그래서 같은 것을 수행 할 수 있습니다
pics_in_cats((1,2,3)).filter(visible=True)
그것은 관련된 모든 종류의 객체를로드하고 자신의 picture_set 속성을 병합하여 수행 할 수 있습니다,하지만 그것은 비효율적 인 것 같다. 가능하다면 원시 SQL로 돌아가는 것을 피하고 싶습니다.
-하지만 :) 말 '하고있는 모든 종류의 차 키를 1,2,3의 일치'한다는 이유를 잘 모르겠어요? 그리고 filter (categories__name__in = [ 'foo', 'bar'])를 사용하여 foo 또는 bar라는 이름의 카테고리에있는 모든 사진을 가져올 수 있습니까? –
맞습니다. 장고 (Django) 빌드 쿼리에 대한 모든 가능성을 보려면 여기를보십시오 : http://docs.djangoproject.com/en/dev/topics/db/queries/ – schneck