2013-03-16 2 views
0

Я не сомневаюсь в решении этой проблемы.Django - Как получить объект из пользовательского тега шаблона?

Я шаблонный тег, который принимает объект:

{% score_for_object OBJECT_HERE as score2 %} 

Проблема заключается в том, что я передаю в шаблон контекст, который пришел из сырца выберите:

cursor = connection.cursor() 
cursor.execute("select ...") 
comments = utils.dictfetchall(cursor) 

К решить проблему тега шаблона, который принимает объект Django, я написал тег шаблона:

''' 
This template tag is used to transform a comment_id in an object to use in the django-voting app 
''' 
def retrive_comment_object(comment_id): 
    from myapp.apps.comments.models import MPTTComment 
    return MPTTComment.objects.get(id=comment_id) 

С этим тегом для шаблона я ожидал, что это сработает:

{% for item in comments %} 
    {% score_for_object item.comment_id|retrieve_comment_object as score2 %} 

    {{ score2.score }} {# expected to work, but not working #} 
{% endfor %} 

Мой вопрос. Можно получить объект из тега шаблона?

С наилучшими пожеланиями,

+0

Хотите ли вы только счет будет проходить в этом теге? – catherine

ответ

2

Чтобы получить счет:

from django import template 
from myapp.apps.comments.models import MPTTComment 

register = template.Library() 

@register.simple_tag 
def retrive_comment_object(comment_id): 
    data = MPTTComment.objects.get(id=comment_id) 
    return data.score 


{% for item in comments %} 
    Score: {% retrive_comment_object item.comment_id %} 
{% endfor %}