Django:向Model Class Object添加其他属性

Tim*_*ung 1 python django google-app-engine

这是使用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)
Run Code Online (Sandbox Code Playgroud)

现在当我进行查询时获取一个"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)
Run Code Online (Sandbox Code Playgroud)

然后我将传递它msglist而不是传递template.html messagesSQL.

uzi*_*uzi 5

在通过for循环向其添加元素后,您仍应该能够将messagesSQL发送到模板.Python允许这样的事情.

在某些情况下可能有意义的其他东西是提供MessageModel方法.例如,如果你有

def since_date_created(self):
    '''Compute the time since creation time based on self.date_created.'''
Run Code Online (Sandbox Code Playgroud)

然后(假设模板中有"messagesSQL"),您可以将该函数用作

{% for msg in messagesSQL %}
    {{ msg.since_date_created }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

基本上,您可以调用模型中的任何方法,只要它不需要传递给它的参数即可.