Доступ django к языку в функции фильтра

У меня есть список элементов в шаблоне django, и я перебираю этот список, чтобы построить таблицу моих записей. В одном из полей у меня есть ключ словаря (int от 1 до 12). Я написал фильтр для изменения ключевых целых чисел на красивые имена. Я хотел бы проверить, какой в ​​настоящее время язык пользователя, прежде чем фильтр вернется. Можно ли проверить код языка в функции фильтра / тега в Django?

Это мой цикл в шаблоне:

{% for field in fields_list %}
<div class="row row-eq-height">
    <div class="col-padding-5"><div class="cart-tab-row">{{ forloop.counter }}</div></div>
    <div class="col-padding-5"><div class="cart-tab-row">{{ field.field_name }}</div></div>
    <div class="col-padding-5"><div class="cart-tab-row">{{ trans field.c_type|get_cname }}</div></div>
    <div class="col-padding-5"><div class="cart-tab-row">{{ field.area|floatformat:2 }}</div></div>
    <div class="col-padding-5"><div class="cart-tab-row">{{ field.price|floatformat:2 }}</div></div>
</div>
{% endfor %}

Это моя функция фильтра

@register.filter
def get_cname(key):
    ctype = CesTypesDict.objects.filter(id=key)[0]
    return ctype.english_type_name

В обычном режиме я получаю доступ к этой информации из атрибута запроса, но в фильтре у меня нет доступа к объекту запроса.

0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Django делает язык текущего цикла запрос-ответ глобально доступным через функцию get_language. Итак, вам не нужен объект запроса:

from django.utils.translation import get_language

@register.filter
def get_cname(key):
    # ...
    language_code = get_language()
    # do stuff with language_code
    return ...

У меня работает :) Но в моем случае импорт должен быть django.utils.translation import get_language

Janek 13.08.2018 09:40

Другие вопросы по теме