2009-04-12 6 views
1

이것은 Google App Engine을 사용하고 있습니다. 이것이 정상적인 Django 개발에만 적용되는지 또는 Google App Engine이 일부 역할을하는지 확신 할 수 없습니다. 그럴 경우 알려 주시면이 문제의 설명을 업데이트 할 수 있습니다. 내가 쿼리는 "MessageModel"의 목록을 얻을에 바인딩 할 template.html로 전송을 수행 할 때Django : 모델 클래스 객체에 추가 속성 추가

class MessageModel(db.Model): 
    to_user_id = db.IntegerProperty() 
    to_user = db.StringProperty(multiline=False) 
    message = db.StringProperty(multiline=False) 
    date_created = db.DateTimeProperty(auto_now_add=True) 

지금, 나는 그런 출력에 "since_date_created"로 몇 속성을 포함 할 것 마지막 출력 이후 얼마나 오래전에 메시지 속성을 사용하여 "하이라이트", "배경색"등과 같은 레이아웃에 도움이되는 다른 매개 변수를 추가 할 수 있습니다.

내가 생각한 유일한 방법은 초기 쿼리 개체를 반복하고 속성 값을 추가하고 목록에 다시 추가 할 새 목록을 만드는 것입니다.

for msg in messagesSQL: 
    msg.lalaland = "test" 
      msg.since_created_time = 321932 
      msglist.append(msg) 

그러면 template.html messagesSQL을 전달하는 대신 msglist를 전달합니다.

답변

5

for 루프를 통해 요소를 추가 한 후에도 messagesSQL을 템플릿에 보낼 수 있어야합니다. 파이썬은 그런 종류의 일을 허용합니다.

경우에 따라 MessageModel 메서드를 제공하는 것이 좋습니다. 당신이 그런 다음

def since_date_created(self): 
    '''Compute the time since creation time based on self.date_created.''' 

이있는 경우 예를 들어, 당신은 기본적으로

{% for msg in messagesSQL %} 
    {{ msg.since_date_created }} 
{% endfor %} 

등의 기능을 사용할 수 있습니다 (템플릿에서 "messagesSQL"가 가정), 당신은 모델의 모든 메소드를 호출 할 수 당신에게 전달 된 인자가 필요하지 않는 한.

4

템플릿 지금

class MessageModel(db.Model): 
    # Definition 
    def since_date_created(self): 
     # ... 

같은 모델 에 방법을 정의하여 그것을 얻을 수 있습니다, 당신이 대답을

Time since created {{ message.since_date_created }} 
+0

감사처럼 많이 사용할 수 있습니다, 내가 처음을 표시 처음 이래로 정답으로 대답하지만, 나는 또한 당신에게 감사를 드리고 싶습니다. – TimLeung

관련 문제