#django #django-templates #django-forms #formset
#django #django-шаблоны #django-forms #набор форм
Вопрос:
Как мне добавить пользовательские метки в мой набор форм?
<form method="post" action="">
{{ formset.management_form }}
{% for form in formset %}
{% for field in form %}
{{ field.label_tag }}: {{ field }}
{% endfor %}
{% endfor %}
</form>
Моя модель:
class Sing(models.Model):
song = models.CharField(max_length = 50)
band = models.CharField(max_length = 50)
Теперь в шаблоне вместо метки поля есть 'song'
, как мне настроить ее так, чтобы она отображалась как 'What song are you going to sing?'
?
Комментарии:
1. Что вы подразумеваете под «пользовательскими метками»? Как они должны выглядеть? Где они должны отображаться? В чем смысл этого извлечения шаблона?
2. извините за неясность. просмотреть изменения?
Ответ №1:
Вы можете использовать label
аргумент в своей форме:
class MySingForm(forms.Form):
song = forms.CharField(label='What song are you going to sing?')
...
Если вы используете ModelForms
:
class MySingForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(MySingForm, self).__init__(*args, **kwargs)
self.fields['song'].label = 'What song are you going to sing?'
class Meta:
model = Sing
Обновить:
(Комментарий@Daniel Roseman)
Или в модели (с использованием verbose_name
):
class Sing(models.Model):
song = models.CharField(verbose_name='What song are you going to sing?',
max_length=50)
...
или
class Sing(models.Model):
song = models.CharField('What song are you going to sing?', max_length=50)
...
Комментарии:
1. я получаю
TypeError: __init__() got an unexpected keyword argument 'label'
2.
label
должна бытьverbose_name
, или просто используйте первый позиционный аргумент.3. Ответ обновлен.
label
аргумент используется только сForm
полями, а не сModel
fields (моя ошибка). Можете ли вы опубликовать свое определение формы, чтобы я мог предоставить вам 100% рабочее решение?4. Я использовал ModelForm
class SingForm(ModelForm): Class Meta: model = Sing
5. Решение с
verbose_name
в поле model должно сработать.