2014-04-29 6 views
1

보기에서 템플릿으로 데이터를 전달할 때 이러한 혼란이 있습니다. 데이터는이 0.12와 같이 float 형식으로 저장되며이 "12 %"와 같이 표시되므로 아래 에서처럼 변경해야합니다. 그러나 여기에 어떤 질문이 있습니까?Django의 템플릿에 데이터를 전달하기 전에 데코레이션

item_list = Items.objects.all() 
for item in item_list: 
    item.interest_rate *= 100 
    item.financing_amount /= 10000 
... 
return render_to_response("xxxx.html",{'ret': item_list}) 

그리고 두 번째는 다음과 같이이다 : 선택의 두 종류가 있는데, 첫 번째는 다음과 같이이다

item_list = Items.objects.all() 
ret = [] 
for item in item_list: 
    temp = { 
     "temp_interest_rate": item.interest_rate *= 100, 
     "temp_interest_rate": item.financing_amount /= 10000, 
    } 
    ret.append(item) 
... 
return render_to_response("xxxx.html",{'ret': ret}) 

첫 번째는 분명히 훨씬 더 간단하지만, 나는 어쩌면 그 생각 우리가 저장하지 않았더라도 직접 데이터베이스 모델을 변경하는 좋은 방법은 아닙니다.

나는 이미 동급생이 안전을 위해 두 번째 동창을 사용하도록 설득했지만, 나는 그것에 대해 확신하지 못했다. 그래서 어떤 숙련 된 장고 개발자가 조언을 해줄 수 있습니까?

+0

제 생각에는 1 차가 훨씬 더 깨끗합니다. – Rohan

답변

1

먼저 "0.12"문자열이며, 부동 소수점 숫자가 아닙니다.

개체를 템플릿으로 전달하기 전에보기에 개체를 장식하는 것이 완벽합니다. 객체에 동적으로 속성을 추가해도 데이터베이스에 영향을주지 않습니다.

여기서 문제는 디스플레이 세부 정보을보기에서 수정하는 것입니다. 이상적이지 않습니다. 프리젠 테이션 레이어 (템플릿)를 사용하여 무언가가 표시되는 방법을 결정하고 뷰를 "원시"데이터를 통해 보내도록해야합니다.

이 문제를 해결하는 가장 쉬운 방법은 프레젠테이션 계층에서 데이터의 형식을 올바르게 지정하는 template filter을 직접 만드는 것입니다. large library of default filters은 모두 데이터를 프리젠 테이션 레이어의 형식으로 변환하는 것과 같은 목적으로 사용됩니다. 그렇기 때문에 권장되는 방법은 자체 필터를 만드는 것입니다.

+0

도움 주셔서 감사합니다. – shellbye

관련 문제