我已经从一个模型创建了多个子表单以使用Django中的FormWizard.
令人困惑的是储蓄部分.用户完成表单后,我想将信息保存在数据库中.我可以说,这只是一种形式
one_form_from_model.save()
但是当我返回一个form_list时,我可以这样做吗?我读了一些帖子,但对我没有任何意义.
我可以清理数据吗?
form_list中表单的form.cleaned_data]
然后通过各种形式?但后来我需要知道以哪种形式找到正确的字段.有没有更容易的方法呢?
感谢您的意见!
是否有任何方法或任何插件使用Materialisecss框架制作步进器并遵循Material Design准则?
我有一个应用程序,其中有一个FormWizard有5个步骤,其中一个只应在满足某些条件时出现.
该表单适用于在线购物车上的付款向导,其中一个步骤应仅显示有可用于piking的促销活动,但是当没有促销时我想跳过该步骤而不是显示空的促销列表.
所以我希望有两种可能的流程:
step1 - step2 - step3
step1 - step3
Run Code Online (Sandbox Code Playgroud) 我正在创建一系列表单,通过 Django 的表单向导处理,但是,表单由许多下拉框组成,其内容取决于当前用户,因此,我需要将 User 作为关键字参数传递。
我目前所拥有的是:
class ViewDataWizard(SessionWizardView):
template_name="wizards/data/view_data.html"
def done(self, form_list,**kwargs):
form_data = process_form_data(form_list)
return render_to_response('wizards/data/view_data_done.html',{'form_data':form_data})
Run Code Online (Sandbox Code Playgroud)
但是,我正在寻求生产这个:
class ViewDataWizard(SessionWizardView):
template_name="wizards/data/view_data.html"
def get_form_kwargs(self, step):
if step == 0:
return {'user':<USEROBJECT>}
else:
return {}
def done(self, form_list,**kwargs):
form_data = process_form_data(form_list)
return render_to_response('wizards/data/view_data_done.html',{'form_data':form_data})
Run Code Online (Sandbox Code Playgroud)
在上面的第二个示例中,我需要用当前用户替换 USEROBJECT,以生成一系列表单。
我错过了一些非常明显的东西吗?传统上我会从request.user给定的视图中获取用户,但是,这在表单向导过程中似乎难以捉摸......
请推荐我获取数据的方式,在wizard的第一步中收到,并以第二步的形式使用:
表格.py
# First step form
class W1_ParamForm(forms.Form):
cities = forms.ModelChoiceField( label = 'City',
queryset=City.objects.all().order_by('name') )
# Second step form
class W1_SelectForm(forms.Form):
oEstates = MyModelMultipleChoiceField(
queryset = RealEstate.objects.
filter(city_id__exact = ...).
order_by('priceM'),
widget = forms.CheckboxSelectMultiple,
required = False)
Run Code Online (Sandbox Code Playgroud)
这里... - 参数,包含城市 id,在第一种形式 W1_ParamForm 中选择。问题 - 如何以第二种形式获得它!
视图.py
class W1_Estim(SessionWizardView):
template_name = "w1_estim.html"
def done(self, form_list, **kwargs):
form_data = [form.cleaned_data for form in form_list]
return render_to_response('w1_done.html', {'form_data': form_data})
Run Code Online (Sandbox Code Playgroud)
网址.py
urlpatterns = [
...
# Wizard start
url(r'^doestim$', W1_Estim.as_view([W1_ParamForm,W1_SelectForm]), name='doestim'),
...
Run Code Online (Sandbox Code Playgroud)
提前谢谢了!
我正在尝试使用Django 1.3 FormWizard上传一个包含两个步骤的文件:1.仅FileField 2.如果文件已正确上传且有效(在自定义验证后),请提供给它一个名称和描述.
在文档之后,我写道:
class CreateCheckWizard(FormWizard):
def done(self, request, form_list):
return HttpResponseRedirect('/my_checks/')
def get_template(self, step):
return ['create_check_%s.html' % step, 'create_check_1.html']
class CreateCheckForm1(forms.Form):
my_file = forms.FileField()
class CreateCheckForm2(forms.Form):
title = forms.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)
我将multipart/form-data添加到模板中的FORM标记:
<form enctype="multipart/form-data" action="." method="post">
但是,即使我上传文件,也会收到错误"此字段是必填项".
我想创建的表单省略了request.FILES字段.我们如何更改该行为以成功上载FormWizard中的文件?
编辑:看看Django源代码,它确实创建了使用form(request.POST)而不是form(request.POST, request.FILES)像应该处理文件的表单.有没有更改源代码上传文件的方法?
我在python中有关于Formwizard的django代码.首先有两种形式:
class AuthenticationForm(forms.Form):
FirstName = forms.CharField(max_length=500)
LastName = forms.CharField(max_length=500)
class SurveyForm(forms.Form):
def __init__(self, *args, **kwargs):
super(SurveyForm, self).__init__(*args, **kwargs)
for question in choiceValue:
self.fields[question] = forms.ChoiceField(choices=CHOICES,widget=RadioSelect())
class ContactWizard(FormWizard):
choiceValue = []
def get_template(self,step):
if step == 0:
return 'wizard0.html'
if step == 1:
return 'wizard1.html'
def process_step(self, request, form, step):
if (step == 0):
fullName=""
if request.method== 'POST':
if form.is_valid():
FirstName = form.cleaned_data['FirstName']
LastName = form.cleaned_data['LastName']
FirstNameU=FirstName.capitalize()
LastNameU=LastName.capitalize()
fullName=FirstNameU+" "+LastNameU
personURIfn=GraphR.triples((None,FOAF_NS['givenName'],Literal(FirstNameU)))
personURIln=GraphR.triples((None,FOAF_NS['familyName'],Literal(LastNameU)))
for purifn in personURIfn:
purifnStr='%s' %purifn[0]
for puriln in …Run Code Online (Sandbox Code Playgroud) 实际上我必须设计一个多步骤的表格.使用bootstrap向导我尝试了很多,但是当提交一个步骤(表单)时它跳转到第一步.如何在成功将当前数据保存到数据库后阻止它进入第一步并进入下一步.我使用的是php和javascript语言.有帮助吗?可能吗?或者我必须为每个步骤而不是向导选项卡设计页面.提前致谢.
formwizard ×9
django ×6
python ×3
file-upload ×1
jquery ×1
jquery-steps ×1
materialize ×1
model ×1
pyqt ×1
qt ×1
save ×1
uistepper ×1