2009-04-12 15 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をテンプレートに送信できるはずです。 Pythonはそのようなことを可能にします。

場合によっては、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

関連する問題