我正在尝试采用脆形式和引导程序,并尽可能多地使用它们的功能,而不是一遍又一遍地发明一些东西。
有没有一种方法可以像 django-admin 表单那样使用 Cripy-forms/bootstrap 来实现内联表单功能?
这是一个例子:
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 那样添加“行”数据?