2014-11-20 2 views
0

나는이 같은 쿼리가 :SqlAlchem ​​y의 쿼리는

session.query(System).filter_by(id_system = s.id_system).join(Command).filter_by(id_command=c.id_command).first() 

내가 템플릿 페이지 (나는 마코을 사용하고 있습니다)에서이 쿼리를 수행하고 싶습니다,하지만 작동하지 않습니다 :

% for c in s.commands: 
    code = session.query(System).filter.... 
% endfor 

페이지에서 쿼리를 수행하는 가장 좋은 방법은 무엇입니까? 아니면 불가능한가요?

+1

아니요. 불가능합니다. 모든 정보가 들어있는 인스턴스를 mako 템플릿에 전달/반환해야합니다. 템플릿의 정보를 구문 분석 할 수 있습니다. –

+0

알겠습니다, 미로 감사합니다. – Ivan

답변

0

템플릿이 이러한 작업을 수행하기에 적합한 장소가 아닙니다. MVC (또는 피라미드로 RV) 패러다임에 따라 모든 비즈니스 로직을 컨트롤러에 포함시켜야합니다.

보기 기능에서

마 쿼리 : 더 나은 일반적인 데이터베이스 작업이 포함되어 모듈 작성 (다음 가져 오기 기능 및보기 기능에서 호출)

import your_project.lib.dbfunctions 
results = dbfunctions.get_articles() 
return dict(status=True, results=results) 
에 의해 템플릿에 결과를 반환

results = DBSession.query(model.Articles).all() 
return dict(status=True, results=results) 

또는 템플릿으로 사용할 것보다

:

<div> 
% for r in results: 
    ${r} 
% endfor 
</div> 

나는 줘야 희망 내가 널 도와 줘.

0

세션과 기타 필요한 기능을 템플릿 컨텍스트에 주입하는 것이 가능할 수도 있지만 이는 올바른 방법이 아닙니다. 대부분의 경우 데이터는 템플릿 외부에서 처리 된 다음 렌더링시 컨텍스트로 전달되어야합니다.

이 템플릿에 대한 렌더링을 호출하는 뷰/함수는이 쿼리를 만들어 템플릿에 전달해야합니다.

관련 문제