首页 > 解决方案 > 动态更新模型

问题描述

我有一个很好用的注册表单。它的一个特点是用户可以按“添加更多+”并创建更多相同的“工具”和“级别”选择字段。该模型仅保存第一个“仪器”和“级别”字段,而不是从 javascript 函数创建的其他字段。调用 javascript 函数时,如何调整模型以创建更多字段?我很感激我得到的任何帮助。

模型.py

class User(AbstractBaseUser):
    instrument = models.CharField(max_length=255, choices=instrument_list)
    level = models.CharField(max_length=255, choices=level_list)

HTML

<div>
    <div class="items">
        <div id="ins">
            <div>
                {{ form.instrument }}
            </div>

            <div>
                {{ form.level }}
            </div>
        </div>
    </div>


    <div id="add_more">
        <button type="button" class="no_link" onclick="add_instrument()">Add more +</button>
    </div>
</div>

Javascript

var i = 0;
var original = document.getElementById('ins');

function add_instrument() {
    var clone = original.cloneNode(true);
    clone.id = "ins" + ++i;
    original.parentNode.appendChild(clone);
}

标签: javascriptpythondjangomodel

解决方案


您正在寻找的是 Django 表单集,以便动态添加或删除表单。想想,形式的一种形式。这是 Django 关于它的文档:https ://docs.djangoproject.com/en/2.0/topics/forms/formsets/ 以及我用来理解和创建表单集的两个很好的教程:

  1. https://medium.com/@taranjeet/adding-forms-dynamically-to-a-django-formset-375f1090c2b0
  2. https://whoisnicoleharris.com/2015/01/06/implementing-django-formsets.html

推荐阅读