将处理后的值与对象一起传递到django模板的最佳方法

时间:2011-11-09 07:23:16

标签: django django-templates django-views

我的表中有一个字段时间戳,类型为long我希望以Django datetime的形式显示它(我将时间戳转换为datetime格式),以及同一对象的一些其他属性,使用sqlalchemy2 .7和django1.3。

views.py

result = session.query(Member).order_by(desc(Member.timestamp))
   for instance in session.query(Member).order_by(desc(Member.timestamp)):
        time = instance.timestamp/1000     # 1314788935874
        print datetime.fromtimestamp(time) # 2011-08-31 06:08:55
    return render_to_response('Member/MemberData.html',{'result': result},context_instance=RequestContext(request))

MemberData.html

{% for instance in result %}
<li>

    {{instance.timestamp}} ::  {{instance.name}} ::  {{instance.age}}

</li>

{% endfor %}

现在出类似:

1314788935874 :: James :: 21
1314788935874 :: John  :: 20
............................
............................

我需要输出如:

  2011-08-31 08:32:16 :: James ::21
  2011-08-31 06:08:55 :: John :: 20
 ............................
 ............................ 

多数民众赞成我想把'time'变量传递给模板,我怎样才能以最小的努力传递它
注意:我希望传递转换后的时间戳和对象的其他一些属性而不做任何更改。 请提出一些标准化的方法,提前致谢。

1 个答案:

答案 0 :(得分:4)

创建自己的template filter

@register.filter
def from_timestamp(value):
    return datetime.fromtimestamp(value/1000)

并在模板中:{{ instance.timestamp|from_timestamp|date:"Y-m-d H:i:s" }}

views.py:

result = session.query(Member).order_by(desc(Member.timestamp))
for instance in result:
    time = instance.timestamp/1000
    instance.datetimestamp = datetime.fromtimestamp(time)
    return render_to_response('Member/MemberData.html',{
        'result': result}, context_instance=RequestContext(request))

并在模板中: {{ instance.datetimestame|date:"Y-m-d H:i:s" }}