我依旧记得在过去的教程中看过这个。但是,我很难找到目前文档中的确切方式。
假设我们有一个名为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...)
谢谢。
答案 0 :(得分:6)
只需在模型上设为property即可。
class Post(Model)
@property
def age(self):
return now() - self.timestamp