Могу ли я использовать псевдонимы полей в шаблонах Django? - PullRequest
3 голосов
/ 03 февраля 2010

Я новичок в django и python ...

У меня есть модель, которая включает в себя 10 общих полей от attrib_00 до attrib_09.

Я передаю эти поля как контекст в шаблон djangostring.

Я хотел бы использовать более значимые имена в шаблоне.

Строки шаблона извлекаются из другой модели, и я имею в виду добавление поля, содержащего список связанных псевдонимов, разделенных запятыми.имена.Идея в том, что первый псевдоним в списке соответствует attrib_00, а вторая - attrib_01 ...

Я думаю, мне нужно изменить контекст перед рендерингом, чтобы общие ключи были заменены псевдонимами.

Я на правильном пути?

Есть ли лучший способ?

Спасибо, Эд

PS

(кнопка добавления комментария не работает для меня?)

У меня пока нет кода.Может быть, я должен объяснить, что я пытаюсь достичь ...

У меня есть существующее приложение, написанное на Delphi, которое помогает мне поддерживать большое количество списков ebay, и я хотел бы эмулировать это как django / pythonвеб-приложение.

Каждый продукт / список принадлежит категории, и у каждой категории есть набор атрибутов.Так, например, брюки могут иметь цвет, vio_size и leg_length.Количество и тип атрибутов для каждой категории различаются, но никогда не превышают 10.

Я могу видеть, как, например, attrib_00 можно использовать для размера в одной категории и сказать, что металл в другой, но затем застрянет с использованием универсальногоИмена полей в шаблоне.

Только для информации: - Я полагаю, я бы делал любые циклы в представлении с несколькими вызовами процесса рендеринга до возврата ответа?

Ответы [ 2 ]

5 голосов
/ 03 февраля 2010

Я бы сказал, чтобы сделать ваши псевдонимы в контексте, прежде чем перейти от представления к шаблону. Что-то вроде:

c = Context({'foo': attrib_01, 'bar': attrib_02, ...})

Вы можете подключить это к новой функции, чтобы не прерывать СУХОЙ и готово.

Обновление:
Что касается отображения этого в шаблоне, то не так много. Шаблон, в конце концов, просто шаблон. Единственное, что близко подходит к работе, как вы думаете, это блок {% with %}:

{% with attrib_01 as foo %}
   <div class="foo">{{ foo }}</div>
{% endwith %}

Скорее всего, это сработает, но, боюсь, это может стать довольно уродливым.

0 голосов
/ 03 февраля 2010

Как насчет использования переводов?

attrib_00 = models.TextField(_('attrib_00'), blank=True, null=True)

И затем при необходимости сделайте разные переводы для attrib_00.

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