Я пытаюсь внедрить crispy-forms и bootstrap и использовать как можно больше их функциональных возможностей вместо того, чтобы изобретать что-то снова и снова.
Есть ли способ реализовать функциональность встроенных форм с помощью crispy-forms / bootstrap, как у форм django-admin?
Вот пример:
class NewProjectForm(forms.Form):
name = forms.CharField(required=True, label=_(u'Название проекта'), widget=forms.TextInput(attrs={'class':'input-block-level'}))
group = forms.ModelChoiceField(required=False, queryset=Group.objects.all(), label=_(u'Группа проектов'), widget=forms.Select(attrs={'class':'input-block-level'}))
description = forms.CharField(required=False, label=_(u'Описание проекта'), widget=forms.Textarea(attrs={'class':'input-block-level'}))
class Meta:
model = Project
fields = ('name','description','group')
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.form_class = 'horizontal-form'
self.helper.form_action = 'submit_new_project'
self.helper.layout = Layout(
Field('name', css_class='input-block-level'),
Field('group', css_class='input-block-level'),
Field('description',css_class='input-block-level'),
)
self.helper.add_input(Submit('submit',_(u'Создать проект')))
self.helper.add_input(Submit('cancel',_(u'Я передумал')))
super(NewProjectForm, self).__init__(*args, **kwargs)
он будет отображать приличную форму:
Как мне добавить форму, которая в основном представляет эту модель:
class Link(models.Model):
name = models.CharField(max_length=255, blank=False, null=False, verbose_name=_(u'Название'))
url = models.URLField(blank=False, null=False, verbose_name=_(u'Ссылка'))
project = models.ForeignKey('Project')
Таким образом, будет проект и ссылки на имя / URL и способ их добавления, как и в django-admin, где вы можете добавлять дополнительные «строки» с данными, относящимися к вашей основной модели. На снимке экрана ниже вы можете заполнить данные для объекта «Вопрос», а ниже вы можете добавить данные для объектов QuestionOption - вы можете щелкнуть значок «+», чтобы добавить столько параметров QuestionOptions, сколько хотите.
Я не ищу способ автоматически генерировать формы из моделей (это приятно, но не самое важное) - есть ли способ создать форму, которая позволит вам добавлять «строки» данных, как это делает django-admin ?