Django делает название поля модели ссылкой - PullRequest
2 голосов
/ 11 мая 2010

я хочу иметь ссылку на название поля модели. Поэтому, когда я заполняю форму, используя интерфейс администратора, я могу получить доступ к некоторой информации.

Я знаю, что это не работает, но показывает, что я хочу сделать

class A(models.Model):
    item_type = models.CharField(max_length=100, choices=ITEMTYPE_CHOICES, verbose_name="<a href='http://www.quackit.com/html/codes'>Item Type</a>")

Другой вариант - поместить описание рядом с полем.

Я даже не уверен, с чего начать.

Ответы [ 2 ]

1 голос
/ 12 мая 2010

К сожалению, это намного сложнее, чем на первый взгляд. Между точкой, в которой вы определяете verbose_name, и временем, которое он достигает {{ field.label_tag }} в шаблоне admin/includes/fieldset.html, с этой строкой происходит множество манипуляций. По сути, независимо от того, что вы делаете, строка возвращается в юникод и (в конечном итоге) экранируется в label_tag. Попытка использовать mark_safe или SafeUnicode или даже шаблоны шаблонов |safe не может предотвратить происходящее экранирование.

Это означает, что у вас есть три варианта:

  1. Выполните много хакерских действий во внутренних органах django, чтобы нести строку SafeUnicode на всем пути через невредимый.

  2. Построить тег метки поля вручную в шаблоне admin/includes/fieldset.html. Помните, что на этом ярлыке есть много важных атрибутов, таких как id, for, class и т. Д.

  3. Создайте фильтр шаблона, который анализирует строку внутри тега label и преобразует ее в ссылку для вас.

Вариант третий, на самом деле, может быть самый простой, если вы хорошо справляетесь с регулярными выражениями.

0 голосов
/ 12 мая 2010

Это то, что действительно должно быть обработано в шаблоне.

Вот один из способов ...

Вы можете создать целую другую модель под названием «Описание», а затем сделать «Тип элемента» в качестве записи в этой таблице.

Оттуда вы можете проверить декоратор постоянных ссылок http://docs.djangoproject.com/en/dev/ref/models/instances/#the-permalink-decorator, который позволит вам создавать постоянные ссылки для любого данного объекта "Описание".

Наконец, посмотрите http://docs.djangoproject.com/en/1.1/ref/contrib/admin/#overriding-admin-templates для изменения шаблонов администратора. Когда вы редактируете объекты class A, вы можете вставить привязку к постоянной ссылке этого объекта Description.

То, что вы хотите сделать, определенно возможно. Вам просто нужно реорганизовать свое мышление.

Удачи!

...