我正在尝试构建一个向DataBase填充数据的向导。 我尝试了session.Wizard没有成功加上我认为这不是什么需要。 如果我错了,请纠正我。
基本上我的数据库有一些需要填充的表, 因为关节需要完成,我想做一个漂亮的向导,带你一路走来。
所以我有一个基本模板可以有步骤,如果存在所有准备好,有时不需要创建新数据。 所以我在模板上显示了每个表,这样用户就可以检查表中是否包含下一步所需的内容,或者他需要创建它。
我制作了一个cbv FormView 我试图从GET中获取步骤并加载所需的ModelForm
model.py
Class A(models.Model):
user = CharField()
class B(models.Model):
pupy = CahrField()
form.py
AForm(forms.ModelForm):
class Meta:
model=A
fields = ['user']
BForm(forms.ModelForm):
class Meta:
model=B
fields = ['pupy']
views.py
class Wizard(FormView)
template_name = 'test.html'
def get(self, request, *args, **kwargs):
self.step = self.request.GET.get('step')
self.form_class = FORM[self.step] # FORM = dict {'step': ModelForm}
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.save()
我无法在此输入我迄今为止尝试的所有内容,基本上我 通过克隆链接来获取我的表单到html 但是我正在拯救他们,我已经设法保存了第一张表格 如果我做的话
def __init__
self.step = 'first_step'
就像测试一样
答案 0 :(得分:0)
从另一个帖子中找到答案,该帖子通过合并2个人的答案来工作 Switch case for form_class and template_name
@Denny Crane
class Foo(FormView):
def dispatch(self, request, *args, **kwargs):
self.var = request.session['sessionvar']['var']
if self.var == some_value:
form_class = form1
template_name = template1
elif self.var == another_value:
form_class = form2
template_name = template2
[...]
return super(Foo, self).dispatch(request, *args, **kwargs)
@Serafeim
还需要覆盖get_form_class()
def get_form_class(self):
self.form_class = FORM[self.step]
return self.form_class