【问题标题】:Django Formtools Add Formset DynamicallyDjango Formtools 动态添加表单集
【发布时间】:2020-06-30 15:30:19
【问题描述】:

我正在使用Django Formtools 为职位发布流程创建多步骤表单。在其中一种形式中,我有 Job Questions 我希望用户动态添加它,比如一个复选框,如果他们有兴趣添加问题,它会生成问题表单。他们应该有一个按钮来创建尽可能多的问题。现在我面临的挑战是,当我使用普通模型表单时,我能够完成职位发布过程,但如果我用模型表单集替换问题表单并将其包含在 form_list 中,我会遇到关键错误。

其次,如果我在动态添加字段时尝试各种 Javascript 响应,例如 this stack overflow response,我会收到表单验证错误。顺便提一下,问题表单使用与其他表单(工作模型)相同的模型,因此我的期望是,无论添加多少问题,它们都会保存到 工作模型。有谁知道该怎么做?在 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)

【问题讨论】:

    标签: python django formset django-formtools


    【解决方案1】:

    所以我可以通过使用Django Dynamic Formset 库来处理这个问题。我所需要的只是在我的 STATIC_URL 中创建 jquery.formset.js,然后在 jquery 之后在我的模板中引用它。然后在我的模板 部分中,我通过了以下内容:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-26
      • 2020-01-22
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      相关资源
      最近更新 更多