使用 django 动态添加输入字段并将数据保存到数据库
Posted
技术标签:
【中文标题】使用 django 动态添加输入字段并将数据保存到数据库【英文标题】:Dynamically add input fields and save data to Database using 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 框架。 【参考方案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/")
【讨论】:
数据库中只存储一行值。 我已经更新了一些逻辑。也通过打印检查你传递了多少行以上是关于使用 django 动态添加输入字段并将数据保存到数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何在编辑内容并将javascript变量传递给它的新输入字段后将Django“forms.ModelForm”保存在数据库中
如何使用 jquery 和 Ajax 将多个文件字段保存到 django