2010-05-11 3 views
2

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

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

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>") 

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

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

+0

Я действительно не рекомендую делать что-то подобное. HTML-код в файлах моделей - плохая идея, так как вы хотите отделить их от одного и другого. Вместо этого вы должны создать ссылки в шаблоне. Как вы думаете, что выиграть, если вы сделаете это в определении модели? – Jens

ответ

0

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

Вот один из способов это сделать ...

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

Оттуда вы можете найти декоратор 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.

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

Удачи вам!

1

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

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

  1. Do много взлома в виде Джанго внутренностей носить SafeUnicode струны, весь путь через невредимые.

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

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

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