2

過去のチュートリアルでこれが行われたことをかすかに覚えています。ただし、現在ドキュメントで正確な方法を見つけるのに苦労しています。

Post というモデルがあるとします。このモデルには、timestamp というフィールドがあります。ただし、このモデルをテンプレートに送信する場合、タイムスタンプは気にしません。代わりに、タイムスタンプから推測できる、より人気のある "年齢" (X 分/時間前に作成されたもの) が必要です。

タイムスタンプ用にまったく新しいフィールドを作成する代わりに、カスタム テンプレート タグを使用する代わりに、テンプレートに送信する前に一時的にモデルにフィールドを追加することはできますか?

元。

# 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...) 

ありがとうございました。

4

1 に答える 1

6

モデルのプロパティにするだけです。

class Post(Model)
  @property
  def age(self):
    return now() - self.timestamp
于 2013-07-01T06:30:42.187 に答える