Py学习  »  Django

为什么我的django formwizard代码会在不满足条件的情况下运行?

Christopher Gunawan • 4 年前 • 263 次点击  

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

任何帮助都将不胜感激。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46776
 
263 次点击