【问题标题】:Dynamically add input fields and save data to Database using django使用 django 动态添加输入字段并将数据保存到数据库
【发布时间】:2017-08-31 23:26:01
【问题描述】:

我想将多个数据保存到具有自动递增 ID(1、2、3...等)的数据库中,而不是在同一列中。用户可以动态添加输入字段,最后点击提交按钮将数据保存到数据库中,每个字段都有不同的 id(自动递增 id)。

我在单击按钮时对添加输入字段进行了 HTML 和 J 查询。但我不知道使用 django 将其存储在数据库中。我在 view.py 文件中没有做任何事情来存储它。

enter image description here 这是使用 HTML 和 Jquery 添加字段的代码

【问题讨论】:

  • Id 默认为自增字段。您需要预先定义用户可以在模型中添加哪些文件。不建议向数据库添加列取决于用户。如果您想从 JS 发送 JSON 数据并将其存储在数据库中,我建议您使用 django rest 框架。

标签: jquery django


【解决方案1】:

HTML:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
   $(function(){
   var i =0;

  $('#adduser").click(function(){
      var AnswerHTML = "";
      AnswerHTML ='<div class="form-group" style="border: 1px solid;background-color: #ADD8E6">'
    +' <div class="col-xs-4"><input type="text" name="firstname'+i+'"> </input></div>'
    +' <div class="col-xs-4"><input type="text" name="age'+i+'">  </input></div>'
    +' <div class="col-xs-4"><input type="text" name="relation'+i+'"></input></div>'
    +'<i class="icon-trash" style="padding-left:20px;  cursor: pointer;"></i></div>';


  $('#divQuatationList').append(AnswerHTML);
  i++;
   $("#totallength").val(i);

 });
});
$(document).on("click",".icon-trash",function(e){

$(this).closest('.form-group').remove();
});
</script>

<body>
<div>
<p id='adduser' class='btn btn-info' >ADD</p>
</div>

<form class="form-horizontal row-border" action="{% url "Saveforms" %}" method="post">
<input type="hidden" id="totallength" name="totallength"  />
<div id="divQuatationList"></div>
<div class="col-md-12"><input type="submit" id="Submit" class="btn btn-info pull-right" value="SaveData"  />
</form>
</body>
</html>

 URL 

 url(r'^Saveforms/$', views.Saveforms, name='Saveforms'),


 Views

 def Saveforms(request):

 lenth =  request.POST['totallength']

 if request.POST:
    i = 0
    for index in range(i,int(lenth)):
        firstname =""
        age =""
        relation =""
        flag=0
        if 'firstname'+str(index) in request.POST:
            firstname= request.POST['firstname'+str(index)]
            flag = 1
        if 'age'+str(index) in request.POST:
            age= request.POST['age'+str(index)]
            flag = 1
        if 'relation'+str(index)  in request.POST:
            relation= request.POST['relation'+str(index)]         
            flag = 1

        if flag == 1: 

             UserName.objects.create(firstname=firstname,age=age,relation=relation)               

return HttpResponseRedirect("/dynamicform/Manageforms/")

【讨论】:

  • 数据库中只存储一行值。
  • 我已经更新了一些逻辑。也通过打印检查你传递了多少行
猜你喜欢
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多