2013-07-01 3 views
2

이전에 자습서에서 전에했던 일을 희미하게 기억합니다. 그러나, 메신저에서 문서를 정확히 찾는 방법에 어려움을 겪고 있습니다.추가 사용자 정의 필드가있는 템플릿에 django 모델을 보내는 방법은 무엇입니까?

Post라는 모델이 있다고 가정 해 보겠습니다. 이 모델에는 timestamp라는 필드가 있습니다. 그러나이 모델을 템플릿에 보낼 때 타임 스탬프는 신경 쓰지 않습니다. 대신, 우리는 더 인기있는 "연령"(X 분/시간 전 생성)을 원합니다. 고맙게도, 타임 스탬프에서 추론 할 수 있습니다.

사용자 정의 템플릿 태그 대신 timestamp에 대해 완전히 새로운 필드를 만드는 대신 모델에 임시로 필드를 추가하여 템플릿에 전송할 수 있습니까?

Ex.

# views.py 
# Is the below code right? do I need to save()? 
posts = Posts.objects.filter(...).filter(...)[:X] 
for post in posts: 
    # Post does not have an age field, we are creating one 
    # temporarily before sending it to the template 
    post.age = some_function(post.timestamp) 

return render_to_response(template, {'posts' : posts}, etc...) 

감사합니다.

답변

6

그냥 property 모델로 만드십시오.

class Post(Model) 
    @property 
    def age(self): 
    return now() - self.timestamp 
+0

@properties와 django의 의미는 무엇입니까? 이것은 일반적인 필드처럼 취급됩니까? 저는 나이 만들기를위한 칼럼을 원하지 않았습니다. 열이 생성되지 않으면 이러한 속성이 정확히 어떻게 처리됩니까? 더 중요한 것은 실제 템플릿에서 "연령"속성에 실제로 액세스 할 수 있습니까? –

+0

속성은 결코 테이블의 필드가되지 않습니다. 모델 클래스 자체에서 처리합니다. 템플릿 렌더러에 전달 된 모든 객체의 모든 속성에 액세스 할 수 있습니다. –

+0

감사합니다. 만약 당신이 알고 있다면, 여전히 호기심, 위의 예제 코드는 작동합니까? 내가 해봤을 때 작동하지 않겠지 만 어딘가에서 구문 오류가있는 것 같아 ... –

관련 문제