2014-03-31 2 views
1

SQLAlchemy 모델이 있는데, 예를 들어 Entity이고이 열은 is_published입니다. 만약 내가 이걸 질문하면, ID로 말하면, is_publishedTrue으로 설정된 경우에만 이것을 돌려 주려고합니다. 나는 필터를 사용하여 달성 할 수 있다고 생각합니다. 하지만 거기에 관계가 있고 나는 another_model_obj.entity처럼 액세스 할 수 있고 필요가 있습니다. 해당 인스턴스의 is_publishedTrue으로 설정된 경우에만 해당 엔터티 개체를 제공하기를 원합니다. 어떻게해야합니까? 한 가지 해결책은 이것을 사용할 때마다 if 블록을 사용하여 이것을 랩핑하는 것입니다. 그러나 나는 이것을 너무 많이 사용하고, 다시 사용하면이 내용을 기억해야 할 것입니다. SQLAlchemy에서 이것을 자동화 할 수있는 방법이 있습니까? 아니면 전체적으로이 문제에 대한 더 나은 해결책이 있습니까? 당신SQLAlchemy에서 어떻게이 작업을 수행 할 수 있습니까?

답변

2

감사 그것은 당신이 가입해야하는 것처럼 읽

session().query(AnotherModel).join(Entity).filter(Entity.is_published) 
+0

IIRC를 사용하면 명시 적'.join'을 생략하고'... query (Entity, AnotherModel) .filter (...)'를 작성할 수도 있습니다. – 9000

+1

이 작업을 수행 할 수는 있지만 AnotherModel 인스턴스는 결과 집합의 일부가됩니다 – knitti

+0

물론 모델 및 서비스 파일의 내용에 대해 이와 같은 것을 사용합니다. 뷰에 대해서는 404로 중단합니다.하지만 필연적 인 템플릿 사용에서는 완전한 쿼리를 수행 할 수 없지만 어떻게해야합니까? – adarsh

0

이 질문에 좋은 답변을하지 않습니다 아직 여기에 여러 번 요청 하였다. Here are 가능한 해결책은 SQLAlchemy의 작성자가 제안한 것입니다. 게시되지 않은 개체를 제외하는보다 정교한 쿼리 클래스 is provided in iktomi library. SQLAlchemy 0.8. * 브랜치에서만 작동하지만 0.9. *로 곧 포팅되어야합니다. 제한 사항 (실패한 테스트는 @unittest.skip()으로 표시됨) 및 사용 예는 test cases을 참조하십시오.

관련 문제