Поиск свойств объекта шаблона Django с именем динамической переменной - PullRequest
1 голос
/ 04 октября 2011

У меня есть таблица с пользователем, рангом, приседом, тяга, жим лежа, Clean and Jerk и Snatch.

Система ранжирования будет ранжировать любое количество комбинаций, начиная от общей суммы Squated, до общей суммы, измеренной в прессе и тяге, до общей суммы, поднятой во всех пяти дисциплинах.Как вы можете видеть, существует огромное количество доступных комбинаций, по которым пользователь может проверить свой рейтинг.Хотя мне еще предстоит тщательно добавить все эти рейтинговые комбинации в мою базу данных, я сделал основные 5, т.е. SQ_rank.

В моем файле представлений я сделал следующее, где request.GET получает либо 'SQ''DL', 'BP', 'Snatch' или 'CJ':

def rankings()
    a = ''
    for i in request.GET:
        a += i    
    b = a + '_rank'    
    query_results = UserProfile.objects.all().order_by(a)
    rank = b
    return render_to_response('registration/rankings.html',{'query_results': query_results, 'rank': rank,}, context_instance=RequestContext(request, processors=[custom_proc])) 

Теперь я хочу ранг как переменную внутри моего шаблона.он вернет что-то _rank, такое как SQ_rank или DL_rank, которое находится в моей базе данных.

{% for item in query_results %}
    <tr>
    <td>{{ item.user }}</td>
    <td>{{ items.??? }}</td>
    <td>{{ item.SQ }}</td>
    <td>{{ item.DL }}</td>
    <td>{{ item.BP }}</td>
    <td>{{ item.CJ }}</td>
    <td>{{ item.Snatch }}</td>
    </tr>
{% endfor %}

Как мне сделать это, не загружая кучу тегов {% ifequal%}}, учитывающих все возможные комбинации, которые будут доступны, когда я найду время добавить их в свою базу данных?Имеет ли все это смысл

1 Ответ

0 голосов
/ 05 октября 2011

Прежде всего:

for i in request.GET:

недопустимо, поскольку request.GET - это диктат, а не список. Если что вы имеете в виду под пунктом. ??? это поиск свойства элемента, имя которого содержится в переменной "rank", вот что я использую для этой цели:

{{ item|ofKey:rank }}

"ofKey" - это пользовательский шаблонный фильтр. Создайте файл, скажем, extra.py, который содержит:

from django import template
register = template.Library()

@register.filter
def ofKey(value, arg):
    if value:
        return value.get(arg)
    else:
        return ""

Теперь сохраните этот файл в подкаталоге templatetags одного из каталогов вашего приложения. Вам нужно будет использовать:

{% load extra %}

в начале шаблонов, где вам это понадобится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...