Django插入数据(获取正确的数据)
我的html中有这段代码Django插入数据(获取正确的数据),django,Django,我的html中有这段代码 <form method="post" id="DogForm" action="/studentbehavior/" class="myform" style="width: 100%" enctype="multipart/form-data">{% csrf_token %} <table class="tblcore"> <input type="hidden" value="{{teacher}}" name="
<form method="post" id="DogForm" action="/studentbehavior/" class="myform" style="width: 100%" enctype="multipart/form-data">{% csrf_token %}
<table class="tblcore">
<input type="hidden" value="{{teacher}}" name="teacher">
<tr>
<td rowspan="2" colspan="2">Core Values</td>
{% for core in corevalues %}
<td colspan="8"><input type="hidden" value="{{core.id}}" name="core">{{core.Description}}</td>
{% endfor %}
</tr>
<tr>
{% for corevalues in corevaluesperiod %}
<td colspan="4" style="font-size: 12px"><input type="hidden" value="{{corevalues.id}}" name="coredescription">{{corevalues.Description}}</td>
{% endfor %}
</tr>
<tr>
<td colspan="2">Student's Name</td>
{% for corevalues in period %}
<td colspan="4">
<input type="hidden" value="{{corevalues.id}}" name="coreperiod">Q {{corevalues.id}}
</td>
<td colspan="4">
<input type="hidden" value="{{corevalues.id}}" name="coreperiod">Q {{corevalues.id}}
</td>
<td colspan="4">
<input type="hidden" value="{{corevalues.id}}" name="coreperiod">Q {{corevalues.id}}
</td>
<td colspan="4">
<input type="hidden" value="{{corevalues.id}}" name="coreperiod">Q {{corevalues.id}}
</td>
<td colspan="4">
<input type="hidden" value="{{corevalues.id}}" name="coreperiod">Q {{corevalues.id}}
</td>
<td colspan="4">
<input type="hidden" value="{{corevalues.id}}" name="coreperiod">Q {{corevalues.id}}
</td>
<td colspan="4">
<input type="hidden" value="{{corevalues.id}}" name="coreperiod">Q {{corevalues.id}}
</td>
{% endfor %}
</tr>
{% for students in student %}
<tr>
<td colspan="2" class="names"><input type="hidden" value="{{students.id}}" name="student">{{students.Students_Enrollment_Records.Students_Enrollment_Records.Students_Enrollment_Records.Student_Users}}</td>
<td colspan="4">
<select name="marking">
<option>--------</option>
{% for m in marking %}
<option value="{{m.Marking}}" >{{m.Marking}}</option>
{% endfor %}
</select>
</td>
<td colspan="4">
<select name="marking">
<option >--------</option>
{% for m in marking %}
<option value="{{m.Marking}}">{{m.Marking}}</option>
{% endfor %}
</select>
</td>
<td colspan="4">
<select name="marking">
<option>--------</option>
{% for m in marking %}
<option value="{{m.Marking}}">{{m.Marking}}</option>
{% endfor %}
</select>
</td>
<td colspan="4">
<select name="marking">
<option>--------</option>
{% for m in marking %}
<option value="{{m.Marking}}">{{m.Marking}}</option>
{% endfor %}
</select>
</td>
<td colspan="4">
<select name="marking">
<option>--------</option>
{% for m in marking %}
<option value="{{m.Marking}}">{{m.Marking}}</option>
{% endfor %}
</select>
</td>
<td colspan="4">
<select name="marking">
<option>--------</option>
{% for m in marking %}
<option value="{{m.Marking}}">{{m.Marking}}</option>
{% endfor %}
</select>
</td>
<td colspan="4">
<select name="marking">
<option>--------</option>
{% for m in marking %}
<option value="{{m.Marking}}">{{m.Marking}}</option>
{% endfor %}
</select>
</td>
</tr>
{% endfor %}
</table>
<input type="submit" value="Insert" id="submit">
</form>
这是我的问题,保存到datavase的所有标记,即使我在选择框(在管理视图中)中仅选择一个标记,看起来数据库中输入的数据不正确
这是我渴望的答案
更新
当我试着回答mr@SaisivaA
for m, student, desc in zip(request.POST.getlist('marking'), request.POST.getlist('student'),
request.POST.getlist('coredescription')):
coredescription = CoreValuesDescription(id=desc)
students = StudentPeriodSummary(id=student)
V_insert_data = StudentsCoreValuesDescription(
Teacher=teacher,
Core_Values=coredescription,
Marking=m,
Students_Enrollment_Records=students,
grading_Period=coreperiod,
)
V_insert_data.save()
这是我输入的数据
这是我在我的管理网站收到的结果
更新
我为每个学生和每个核心价值观选择一个分数,然后将所有数据发送回服务器
如果我想这样输入
在我的数据库中插入的结果如下
当我尝试将此添加到我的视图时,请再次更新
for markingID in request.POST.getlist('marking'):
marking.append(markingID)
print(marking[m])
错误是
列表索引必须是整数或片,而不是str只需修改以下格式的代码即可
for m, students, desc in zip(request.Post.getlist('marking'), request.Post.getlist('student'), request.Post.getlist('coredescription')):
V_insert_data = StudentsCoreValuesDescription(
Teacher=teacher,
Core_Values=coredescription,
Marking=m,
Students_Enrollment_Records=students,
grading_Period=coreperiod,
)
V_insert_data.save()
return render(request, "Homepage/updatebehavior.html")
试试这个
marking = []
for markingID in request.POST.getlist('Marking'):
marking.append(markingID)
for i, mark in enumerate(request.POST.getlist('Marking')):
s = StudentBehaviorMarking(id=mark)
core = corevalues[i]
cores = EducationLevelGradingBehavior(id=core)
print("mark", mark, "per description", core)
for student in request.POST.getlist('student'):
students = StudentPeriodSummary(id=student)
V_insert_data = StudentsBehaviorGrades(
Teacher=teacher,
# Education_Levels
Students_Enrollment_Records=students,
Grading_Period=coreperiod,
Grading_Behavior=cores,
Marking=s,
)
V_insert_data.save()
您如何保存这些数据?您是否为每个学生和每个核心价值观选择一个分数,然后将所有数据发送回服务器?你如何知道哪个分数代表哪个学生,哪个分数代表什么核心价值观?在我看来,你只是在循环所有分数、所有学生、所有核心价值观,然后更新它们。没有证据表明这个标记是给这个学生的。我在学生循环上循环标记,是@crimson589我该怎么做才能正确?以一种恰当的方式,请帮助我sirWell目前你只是得到了你所有的东西的列表,你的数据中没有结构。我会首先尝试使用javascript在html页面中构建json对象。类似于
[{StudentID1:{CoreID1:Mark,CoreID2:Mark}},{StudentID2:{CoreID1:Mark,CoreID2:Mark}}]
。通过这种方式,您可以在视图中循环此对象,并将每个学生更新为1乘1。您可以给出如何执行此操作的示例吗?我不明白,我也不知道怎么做。。。很抱歉,我现在无法访问开发PC来尝试一些代码。如果您愿意使用jquery,基本逻辑是首先循环每个学生隐藏的输入,这就是您将获得{StudentID1:
。然后循环通过每个核心值id和它们的标记。它保存所有记录,它仍然是相同的修改签出-@justini获取此错误“”“WSGIRequest”对象没有属性“post”“哦,它的大写字母是P-request。Post-justin请检查我的问题,先生
marking = []
for markingID in request.POST.getlist('Marking'):
marking.append(markingID)
for i, mark in enumerate(request.POST.getlist('Marking')):
s = StudentBehaviorMarking(id=mark)
core = corevalues[i]
cores = EducationLevelGradingBehavior(id=core)
print("mark", mark, "per description", core)
for student in request.POST.getlist('student'):
students = StudentPeriodSummary(id=student)
V_insert_data = StudentsBehaviorGrades(
Teacher=teacher,
# Education_Levels
Students_Enrollment_Records=students,
Grading_Period=coreperiod,
Grading_Behavior=cores,
Marking=s,
)
V_insert_data.save()