Можно ли показать текст справки модели в качестве атрибута заголовка на формах в Django? - PullRequest
5 голосов
/ 23 января 2011

Я хочу показать поле модели help_text в виде атрибута HTML title в форме, вместо того, чтобы добавлять его в конец строки, как по умолчанию.

Мне нравится вся информация о том, что Поле модели находится в одном месте (в самом определении модели), и поэтому не хотел бы указывать пользовательский title для каждого виджета. Впрочем, это нормально, если есть способ указать, что атрибут title каждого из виджетов должен быть равен значению help_text. Это возможно? Я ищу что-то с эффектом:

widgets = {'url':TextInput(attrs={'title': help_text})}

Единственный другой способ, которым я могу думать об этом, - это создавать собственные виджеты для каждого из встроенных типов виджетов. Есть ли более простой и ленивый способ добиться того же эффекта?

Использование Javascript также является опцией, но на самом деле это было бы очень отдаленным последним средством. Я думаю, что это должно быть довольно распространенным вариантом использования; как вы, ребята, справились с этим в прошлом?

Ответы [ 2 ]

3 голосов
/ 23 января 2011
Model._meta.get_field('field').help_text

В вашем случае

widgets = {'url':TextInput(attrs={'title': Model._meta.get_field('url').help_text})}
2 голосов
/ 18 марта 2012

Вот еще один способ использования декоратора класса.

def putHelpTextInTitle (cls):
    init = cls.__init__

    def __init__ (self, *args, **kwargs):
        init(self, *args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs['title'] = field.help_text

    cls.__init__ = __init__
    return cls

@putHelpTextInTitle
class MyForm (models.Form):
    #fields here

Декоратор класса адаптирован с здесь

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