【发布时间】:2015-05-09 07:11:55
【问题描述】:
我想使用 django-crispyForms 在不同的 bootstrap3 选项卡中呈现表单集的每个表单,但这似乎并不简单,因为 KrispyForms 还没有完全处理表单集。
我的表格:
class BlogMessageForm(forms.ModelForm):
class Meta:
model = BlogMessage
fields = ['field1', 'field2', ]
class BlogMessageFormsetHelper(FormHelper):
def __init__(self, *args, **kwargs):
super(BlogMessageFormsetHelper, self).__init__(*args, **kwargs)
self.form_tag = False
self.layout = Layout(
TabHolder(
Tab('Form%s' % (form.pk),
'field1', 'field2', 'DELETE',
)
)
)
我的看法:
def all_blogs_messages_in_bootstrap_tab(request):
all_blog_messages = BlogMessage.objects.all()
blogMessageForm = modelformset_factory(BlogMessage, form=BlogMessageForm, extra=1, can_delete=True)
formset = blogMessageForm(queryset=all_blog_messages)
helper = BlogMessageFormHelper()
render_to_response("blogs/blogMessage_forms.html", {'formset': formset, 'helper': helper}, context_instance=RequestContext(request))
我的 crispyForms 模板:
{% load crispy_forms_tags %}
<form method="post" action="" encrypt="multipart/form-data">{% csrf_token %}
{% crispy formset helper %}
</form>
这里有一些关于crispyForm formset 约束的信息:
【问题讨论】:
-
只需遍历表单集中的表单并调用 crisy 的表单渲染器。您只需要在 forloop 中包装/创建选项卡代码。
-
是的,如果有一个清晰的模板来做这件事,那就太好了。如果有人可以创建这样的模板,我明天会为此开一个赏金。
标签: django twitter-bootstrap-3 django-crispy-forms