лучший способ передать обработанные значения вместе с объектом в шаблон Django - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть поле времени в моей таблице, которое имеет тип long, я хочу отобразить его в виде Django datetime (хорошо, я конвертирую timestamp в формат 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 Ответ

4 голосов
/ 09 ноября 2011

Создайте свой собственный шаблон фильтра :

@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" }}

...