我正在与formwizard一起创建多步骤表单。我重写get_form_instance以使用模型数据预填充表单(仅当使用表单进行编辑时)。我已经明确说明了IF条件:
if 'pk' in self.kwargs:
当我使用表单创建新表单时,在调用向导视图时,该表单的值为false。调用向导视图时,我不会将pk作为kwargs传递。我使用这样的网址:
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
运行代码时,当我创建一个新的表单向导时,将使用数据库中的模型实例填充我的步骤。这里发生了什么? get_form_instance应该不返回None,因为我没有在kwargs中传递PK吗?
任何帮助将不胜感激。