这是使用Google App Engine。我不确定这是否适用于正常的Django开发或者Google App Engine是否会发挥作用。如果确实如此,您能否让我知道,以便我可以更新此问题的描述。
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)
现在,当我进行查询时,获取“MessageModel”列表并将其发送到template.html进行绑定,我想包含更多属性,例如“since_date_created”以输出多久以前最后一个输出,可能会使用message属性,并添加其他有助于布局的参数,如“highlight”,“background-color”等......
我想到的唯一方法是遍历初始查询对象并创建一个新列表,我将添加属性值,然后将其追加回列表。
for msg in messagesSQL:
msg.lalaland = "test"
msg.since_created_time = 321932
msglist.append(msg)
然后我将传递给msglist,而不是传递template.html messagesSQL。
答案 0 :(得分:5)
在通过for循环向其添加元素后,您仍然可以将messagesSQL发送到模板。 Python允许这样的事情。
在某些情况下可能有意义的其他方法是提供MessageModel方法。例如,如果您有
def since_date_created(self):
'''Compute the time since creation time based on self.date_created.'''
然后(假设模板中有“messagesSQL”),您可以将该函数用作
{% for msg in messagesSQL %}
{{ msg.since_date_created }}
{% endfor %}
基本上,你可以调用模型中的任何方法,只要它不需要传递给它的参数。
答案 1 :(得分:4)
您可以通过在模型中定义方法来获得它 像
class MessageModel(db.Model):
# Definition
def since_date_created(self):
# ...
现在在模板中,您可以像
一样使用它Time since created {{ message.since_date_created }}