Django Formtools Добавить Formset динамически - PullRequest
0 голосов
/ 19 марта 2020

Я использую Django Formtools для создания многошаговой формы для процесса публикации вакансии. В одной из форм у меня есть Рабочие вопросы , которые я хочу, чтобы пользователь добавил динамически, например, флажок, который генерирует форму вопроса, если он заинтересован в добавлении вопросов. У них должна быть кнопка, чтобы создать как можно больше вопросов. Теперь моя проблема заключается в том, что, когда я использую обычные формы моделей, я могу завершить процесс публикации задания, но если я заменю форму вопроса набором форм и включу ее в form_list , я получу ключевые ошибки.

Во-вторых, если я попробую различные ответы Javascript при динамическом добавлении полей, такие как этот ответ переполнения стека , я получу ошибки проверки формы. Следует отметить, что форма вопроса использует ту же модель, что и другие формы (модель задания), поэтому я ожидаю, что независимо от того, сколько вопросов будет добавлено, они будут сохранены в модель задания . Кто-нибудь знает как go об этом? Добавление полей в Django formtools динамически и сохранение в модель? Мастер инструментов формы выглядит следующим образом:

class JobWizard(SessionWizardView):
form_list=[JobForm7,JobForm1,JobForm2,JobForm3, JobForm4,JobForm5,JobForm6 ]
file_storage= FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'jobs'))
template_name="jobs/jobforms.html"

def get_template_names(self):
    return [TEMPLATES[self.steps.current]] 
def done(self, form_list, form_dict, **kwargs):
    form_dict = self.get_all_cleaned_data()
    categories = form_dict.pop('categories')
    sub_categories = form_dict.pop('sub_categories')
    job_question = form_dict.pop('job_question')
    print(job_question)
    print("_________________________")
    job=Job.objects.create(**form_dict)
    job.categories=categories
    job.job_question=job_question     
    for sub_category in sub_categories:
        job.sub_categories.add(sub_category)
    # for question in job_question:
    #     job.job_question.add(question)
    job.save()   
    return redirect('job_list')

И моя модель выглядит следующим образом:

class Job(models.Model):
    ...#Other fields
    # Form 4
    job_question=models.CharField(max_length=20, default="")
    # Form 5
    job_freelancers_number=models.IntegerField(default=1)

1 Ответ

0 голосов
/ 20 марта 2020

Так что я смог справиться с этим, используя Django Dynami c Formset library.All мне нужно было создать jquery .formset. js в моем STATIC_URL, а затем ссылаться на тот же в моем шаблоне после jquery. Затем в разделе моего шаблона я прошел ниже:

<script type="text/javascript">
$(function() {
$('#job-question').formset();
})

...