Чтобы получить больше контроля над моими полями ввода, я пытаюсь «скопировать» функцию, которая генерирует поля ввода в шаблоне.
Я использую ModelForm и хочу изменить
...
{{ form.name }}
...
В нечто вроде
...
<input id="{{ form.name.auto_id }}" type="text" name="{{ form.name.name }}" maxlength="{{ form.name.**get_max_length** }}" value="{{ form.name.**get_value_or_initial_value** }}"/>
...
Большая часть этого уже работает, кроме maxlength и value .
максимальная длина
Я читаю
- Как я могу программно получить max_length поля модели Django?
- Django: максимальная длина модели и максимальная длина формы
Но я все еще не понимаю ...
значение
Ответ на этот вопрос (Как вы можете вручную отобразить поле формы с установленным начальным значением?) указывает на заявку, которая уже исправлена. Тем не менее name.value
напечатает "None", если значение отсутствует. Я должен ловить value="None"
вручную или пока есть лучшее решение?
[редактировать]
значение, кажется, работает так
{{ form.name.value|default_if_none:"" }}
(из Показать значение поля формы django в шаблоне ?)
1 ответ
Вы можете получить атрибут max_length из виджета. Для начального значения вам нужно только получить доступ к атрибуту value, уже есть начальное или отправленное значение. Все начальные значения, переданные в класс формы, хранятся в form.initial, но вам, вероятно, не нужно проверять эти значения :.
<input id="{{ form.name.auto_id }}" type="text" name="{{ form.name.name }}" maxlength="{{ form.name.field.widget.attrs.max_length }}" value="{% if form.name.value %}{{ form.name.value }}{% endif %}"/>
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.
value
, похоже, работает (я также нашел ярлык - см. Правку в моем вопросе), однако я не могу заставитьmax_length
работать таким образом. ты пробовал?