views.py
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
if step == 'work_experience':
work_experience = resume.workexperience_set.all()
return work_experience
if step == 'certifications':
certification = resume.certification_set.all()
return certification
if step == 'education':
education = resume.education_set.all()
return education
if step == 'skills':
skill = resume.skill_set.all()
return skill
if step == 'languages':
language = resume.language_set.all()
return language
return None
Привет!У меня есть мастер форм, который работает с разными моделями для каждого шага.У меня есть код выше, чтобы установить начальные данные для каждого шага мастера формы.
Когда я сохраняю последнюю форму, она создает новый экземпляр модели в базе данных.Несколько вопросов:
Как мне получить текущий экземпляр / идентификатор модели вместо создания нового?
Почему код в get_form_instance в разделе "if 'pk' в self.kwargs 'выполняется, даже если я не передаю PK в kwargs через URL?
В методе done Iсделать что-то вроде этого:
views.py
work_experience_form_data = self.get_cleaned_data_for_step('work_experience')
for work_experience in work_experience_form_data:
WorkExperience.objects.create(position=work_experience.get('position'),
company=work_experience.get('company'),
city=work_experience.get('city'),
start_date=work_experience.get('start_date'),
end_date=work_experience.get('end_date'),
achievements=work_experience.get('achievements'),
resume=resume, )