我正与formwizard一起创建一个多步骤表单。我正在重写get_form_实例,以便用模型数据预填充表单(仅当使用表单进行编辑时)。我已经明确声明了一个if条件:
if 'pk' in self.kwargs:
当我使用表单创建新视图时,当我调用向导视图时,该值应计算为false。调用向导视图时,我不会将pk作为kwargs传入。我使用这样的url:
path('create/resume/', views.ResumeWizard.as_view(views.FORMS), name='create-resume')
我的向导视图代码如下:
class ResumeWizard(LoginRequiredMixin, SessionWizardView):
login_url = '/login/'
def get_form_initial(self, step):
if 'pk' in self.kwargs:
return {}
return self.initial_dict.get(step, {})
def get_form_instance(self, step):
if 'pk' in self.kwargs:
pk = self.kwargs['pk']
resume = Resume.objects.get(id=pk)
if step == 'resumes':
return resume
elif step == 'work_experience':
return resume.workexperience_set.all()
elif step == 'certifications':
return resume.certification_set.all()
elif step == 'education':
return resume.education_set.all()
elif step == 'skills':
return resume.skill_set.all()
elif step == 'languages':
return resume.language_set.all()
else:
return None
当我运行代码时,当我创建一个新的表单向导时,我的步骤将由数据库中的模型实例填充。这是怎么回事?不应该因为我没有传入Kwargs中的pk而让get_form_instance返回none吗?
任何帮助都将不胜感激。