Общая проблема
Предположим, у вас есть определенная модель
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>
s и<span>
s в этом цикле и укажите базовый виджет и его attrs
в подклассе Meta
.
Просматривая документацию Django по теме, я понимаю, что мне кажется, что мне нужно поиграть с подклассом Media
, чтобы все манипуляции происходили в свойстве widgets
вMeta
, но я просто не могу обернуть голову вокруг него.
Определенная проблема
Предположим, у меня есть шаблон, где TextInput
формы должны отображать , как в этомtemplate :
<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 в данном случае) не или, по крайней мере, не так, как мне известно
Я прошу прощения задлинный вопрос, я просто почувствовал, что мне нужно подробно объяснить эту проблему, потому что она беспокоит меня некоторое время ...