这些临时数据持有者的技术术语是什么?

时间:2014-01-06 19:12:55

标签: python django

我从来没有读过任何关于你的视图中创建的附加到模型的临时数据的内容,但我只是玩弄它,一切似乎都很好。我想知道是否有人知道这个技术名称,所以我可以了解更多关于它的灵活性。

在我的django观点中我有

for todo in my todolist:
    todo.shorthand = todo.user + todo.name
    todo.active    = len(Posting.objects.filter(user=todo.user)
...
context = {'todolist':todolist}

速记和主动都不是模型中的模型字段,但如果我在我的视图中设置这些字段,我可以在我的模板中用这样的东西调用它们......

{% for todo in todolist|dictsortreversed:"active" %}
  <p> {{todo.shorthand}} {{todo.active}} </p>
{% endfor %}

我不仅可以创建临时数据,还可以将其与dictsort和其他过滤器一起使用。如果这是一个新发现,那就太棒了。

1 个答案:

答案 0 :(得分:4)

没有技术术语。您可以在Python实例上创建其他任意属性。因为这些属性没有在您的模型上定义,所以发生的一切都是Django不会将它们持久化回数据库。

当您从数据库中查询对象时,Django通常会为您创建新实例,但这些对象可以跨请求缓存。当他们这样做时,你创建的那些属性仍然存在。您的代码需要考虑这种可能性。

在这种情况下,您可以为视图的这些属性指定新值,覆盖之前可能设置的任何先前值。