为什么即使不满足IF条件也要运行我的Django formwizard代码?

时间:2018-10-16 11:23:47

标签: django django-forms django-formwizard

我正在与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吗?

任何帮助将不胜感激。

0 个答案:

没有答案