Почему мой код мастера создания форм Django запускается, даже если условие IF не выполнено? - PullRequest
0 голосов
/ 16 октября 2018

Я работаю с Formwizard, чтобы создать многошаговую форму.Я переопределяю get_form_instance, чтобы предварительно заполнить мои формы данными модели (только при использовании форм для редактирования).Я четко указал условие IF:

if 'pk' in self.kwargs:

Когда я использую форму для создания новой, это должно оцениваться как ложное, когда я вызываю представление мастера.Я не передаю 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

Когда я запускаю код, когда я создаю новый мастер формы, мои шагизаполнены экземплярами модели из моей базы данных.Что тут происходит?Разве get_form_instance не должен возвращать None, потому что я не передаю PK в kwargs?

Любая помощь будет высоко оценена.

...