Общая проблема
Допустим, у вас есть определенная модель
class MyModel(models.Model):
Name = models.CharField(max_length=64)
И сопроводительная форма, которую вы используете для создания
class CreateMyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['name']
В нормальной ситуации, когда форма отображается в шаблоне я обычно перебираю поля в шаблоне
{%for field in form%}
{{field}}
{%endfor%}
Когда требуется индивидуальный стиль, мне обычно приходится прибегать к размещению моих <div>
и <span>
в этом цикле и указывать базовый виджет и его attrs
в подклассе Meta
.
Просматривая документацию Django по этой теме, я понимаю, что это похоже, что мне нужно поиграть с подклассом Media
, чтобы все манипуляции происходили в свойстве widgets
в Meta
, но я просто не могу об этом думать.
Конкретная проблема
Предположим, у меня есть шаблон, в котором TextInput
формы должны отображать как в этом шаблоне :
<div class="form-group input-group">
<span class="input-group-addon">Name</span>
<input type="text" name="name" class="form-control" placeholder="MyModel Name">
</div>
Как мне создать виджет, чтобы получить тот же результат, используя:
class CreateMyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['name']
widgets={'name':MyWidget(addon="Name",placeholder="MyModel Name")}
Я понимаю, что заполнитель - это то, что я могу вставить в attrs
инициализацию TextInput
, но надстройка (или родительский div, в данном случае) не или, по крайней мере, насколько мне известно
Прошу прощения за длинный вопрос, я просто почувствовал, что мне нужно подробно объяснить эту проблему, потому что это меня уже давно беспокоит ...
addon="Name"
имя должно входить в диапазон, верно? - person Vaibhav Vishal   schedule 24.09.2018{{ field.label }}
для динамического размещения текста внутри диапазона - person Vaibhav Vishal   schedule 24.09.2018