如何在Django中同时为多个输入在数据库中保存表单输入?

时间:2018-11-28 14:54:37

标签: django django-models django-forms

我正在学习django,并且正在创建一个应用程序,可以根据学生的姓名和注册号在特定班级注册他们。因此,我创建了一个应用程序,用户可以在其中添加表单元素,用户可以在其中添加选项以将不同的学生直接直接添加到表单中。因此,用户可以同时确定他想添加的学生人数,并通过他们的姓名和注册号码添加学生。我创建了以下表单:

    <form method="post" action="/add_rules/">
        {% csrf_token %}
        <div class="field_wrapper">
            <div>
                <label>Enter Name</label>
                <input type="text" name="personname">
                <label>Enter registration number</label>
                <input type="text" name="personregnumber">
                <a href="javascript:void(0)" class="addPerson">Add</a>
                <br><br>
            </div>
        </div>
        <button type="submit">Submit</button>
    </form>

添加和删除输入字段的相应javascript是:

$(document).ready(function () {
        var addButton = $('.addPerson');
        var wrapper = $('.field_wrapper');
        var field_html = '<div><label>Enter name</label><input type="text" name="personname"><label>Enter registration number</label><input type="text" name="personregnumber"><a href="javascript:void(0)" class="remove_button">Remove</a><br><br></div>'

        $(addButton).click(function() {
            $(wrapper).append(field_html);
        })
        $(wrapper).on('click', '.remove_button', function(e) {
            e.preventDefault();
            $(this).parent('div').remove();
        })
    })

我被困在如何将多个学生数据字段同时添加到数据库中?如果有人可以帮助,那就太好了。

很明显,当我必须一次将表单中的数据添加到数据库中时,可以通过以下代码来做到这一点:

view.py:

    def add_student(request):
        personname = request.POST["personname"]
        personregnumber = request.POST["personregnumber"]

        given_student = Student(personname=personname,personregnumber=personregnumber)
        given_student.save()
        return render(request, 'student/studentregistered.html')

models.py所在的位置:

    class Student(models.Model):
        personname = models.CharField(max_length=100)
        personregnumber = models.CharField(max_length=100)

        def __str__(self):
            return self.personname

如您在上面看到的那样,该代码可以完美地一次添加一个学生的详细信息,但是当我单击“添加”以便一次添加多个学生时,以上代码失败。谁能告诉我如何同时在数据库中保存多个学生?

1 个答案:

答案 0 :(得分:0)

除非您从后端提供一些逻辑或代码,否则我无法透露有关后端的详细信息。但是,作为解决方案,在网络世界中拥有此类表单的做法是使用my_list[]之类的名称作为表单输入元素和...

的名称。

您可以这样访问发布列表(例如,在查看功能中):

request.POST.getlist('my_list[]')

请注意,关于this问题,无法简单地使用request.POST['my_list[]']来检索列表,因为他们说这是一个功能(!?)。