python - Django:向模型类对象添加附加属性

标签 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)

现在,当我执行查询获取“MessageModel”列表并将其发送到 template.html 以进行绑定(bind)时,我想包含更多属性,例如“since_date_created”以输出多久以前最后一个输出,可能会使用 message 属性并添加其他有助于布局的参数,例如“highlight”、“background-color”等...

我想到的唯一方法是遍历初始查询对象并创建一个新列表,我将在其中添加属性值,然后将其追加回列表。

    for msg in messagesSQL:
    msg.lalaland = "test"
            msg.since_created_time = 321932
            msglist.append(msg)

然后不再传递 template.html messagesSQL,而是传递 msglist。

最佳答案

在通过 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 %}

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

关于python - Django:向模型类对象添加附加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741270/

相关文章:

python - 在 pandas 数据框中查找行,其中不同的行在存储列表的列的列表中具有公共(public)值

python - 无法将 Python 3.5 配置为在 Windows 上使用 Visual C++ 编译器

python - 更改列表中的值 - python

python - django 1.10 在解析模板 'is_popup' 中的变量 'admin/login.html' 时出现异常

java - 测试非默认 App Engine 任务队列

google-app-engine - 在 AppEngine 中检测客户端中止的请求

python - 无法通过Python连接到DB2驱动程序: SQL1042C

django - 如何将 django-filter 与 django-select2 一起使用?

java - 在获取实体之前,实体计数不会更新

javascript - Django 和 Python 脚本集成 :(