处理表单集变得更简单。
项目描述
django-superform
不那么糟糕的表单集。
如果您想在多个表单之间嵌套,则“SuperForm”绝对非常出色。在SuperForm中使用表单集和嵌套表单。SuperForm将负责其子表单!
想象一下,您想要一个视图来显示和验证一个表单和一个表单集。让我们假设您有一个注册表单,用户可以输入多个电子邮件地址。Django为此用例提供了表单集,但在视图中处理这些通常相当麻烦。您需要手动验证表单和表单集,并且不能使用Django的通用FormView。因此,django-superform就派上用场了。
这里有一个用例的示例。让我们看一下forms.py
from django import forms
from django_superform import SuperModelForm, InlineFormSetField
from myapp.models import Account, Email
class EmailForm(forms.ModelForm):
    class Meta:
        model = Email
        fields = ('account', 'email',)
EmailFormSet = modelformset_factory(EmailForm)
class SignupForm(SuperModelForm):
    username = forms.CharField()
    # The model `Email` has a ForeignKey called `user` to `Account`.
    emails = InlineFormSetField(formset_class=EmailFormSet)
    class Meta:
        model = Account
        fields = ('username',)因此,我们将EmailFormSet直接分配给SignupForm字段。这就是它的位置!那么如何在视图中处理这个组合表单?请看以下内容
def post_form(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            account = form.save()
            return HttpResponseRedirect('/success/')
    else:
        form = PostForm()
    return render_to_response('post_form.html', {
        'form',
    }, context_instance=RequestContext(request))不,我们并没有在拥有 FormSet 的 SignupForm 上做任何不同的事情。这样你可以自由地在表单本身实现所有逻辑,并使用像 CreateView 这样的通用视图,就像你使用简单表单时一样。想看一个例子吗?
from django.views.generic import CreateView
from myapp.models import Account
from myapp.forms import SignupForm
class SignupView(CreateView):
    model = Account
    form_class = SignupForm
urlpatterns = patterns('',
    url('^signup/$', SignupView.as_view()),
)它只需这样做。
文档
完整的文档可在 Read The Docs 上找到:https://django-superform.readthedocs.org/
由 Gregor Müllegger 开发,并与 Team23 合作。
变更日志
0.3.1
- SuperForm.composite_fields 字典不再在表单实例之间共享。每个新的表单实例都会得到一个深度副本。因此,对其的更改不会泄露到相同表单类的其他实例中。 
0.3.0
0.2.0
- Django 1.8 支持。 
- 传递给超级表单的 __init__ 方法的初始值将传递给嵌套表单。 
- 在 ModelFormField 中使用的表单的 empty_permitted 参数将根据字段分配的 required 属性进行设置。 
0.1.0
- 概念验证的初始发布。 
项目详情
django-superform-0.3.1.tar.gz 的散列
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | 149421eaf0cad3571ed8eb159d95a6020dce8bbb93717bc4303fe804c0164aba | |
| MD5 | a00c00cd094d665a8342b820823b1abe | |
| BLAKE2b-256 | c2a8e21b160b66031439157a73c2f84b94d2981f6e5c85fcbcfb4bd11580c3d8 |