2

我隐约记得在过去的教程中看到过这个。但是,我很难找出文档中的确切方式。

假设我们有一个名为 Post 的模型。这个模型有一个叫做时间戳的字段。但是,当我们将此模型发送到模板中时,我们并不关心时间戳。相反,我们想要更流行的“年龄”(在 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 回答