【发布时间】:2020-03-29 16:36:54
【问题描述】:
我能够让一个多选框在编辑模式下工作:
<section class="container">
<div>
<select id="leftValues" size="5" multiple></select>
</div>
<div>
<input type="button" id="btnLeft" value="<<" />
<input type="button" id="btnRight" value=">>" />
</div>
<div>
<select id="rightValues" size="4" multiple>
{% for device in devices %}
<option>{{ device }}</option>
{% endfor %}
</select>
</div>
</section>
<div>
<input type="text" id="txtRight" />
</div>
</section>
<button type="submit" id="save">Save Changes</button>
<!--button type="cancel">Cancel</button-->
<a href="{% url 'inventory:display_maintenance' %}" ><button type="button">Maintenance Page</button></a>
</form>
<link rel="stylesheet" href="{% static 'css/msb.css' %}">
<script>
$("#btnLeft").click(function () {
var selectedItem = $("#rightValues option:selected");
$("#leftValues").append(selectedItem);
});
$("#btnRight").click(function () {
var selectedItem = $("#leftValues option:selected");
$("#rightValues").append(selectedItem);
});
$("#rightValues").change(function () {
var selectedItem = $("#rightValues option:selected");
$("#txtRight").val(selectedItem.text());
});
但是当我选择保存按钮时,在对表格进行更改后,再次在模板中 edit_maintenance.html,它不会输入数据库。
views.py中与此相关的代码如下:
def 编辑维护(请求,ID): license_key = Maintenance.objects.get(id=id) maintenance_form = MaintenanceForm(instance=license_key) 设备 = Devices.objects.filter(维护 = id) 如果 request.method == 'POST': 打印(请求。POST) maintenance_form = MaintenanceForm(request.POST, instance=license_key) 如果maintenance_form.is_valid(): 维护_form.save() # return redirect('maintenance:edit_maintenance', id) 参数 = { “维护表格”:维护表格, “设备”:设备 } 返回渲染(请求,'inventory/edit_maintenance.html',args)我对此还很陌生,所以任何提示、示例都会很棒。
【问题讨论】:
-
欢迎来到 SO。您应该提供更多详细信息,尤其是此模板背后的 逻辑 (
views.py)。 -
谢谢@PedramParsian。好的,这是views.py中的代码
-
我相信我需要添加更多细节。我使用了此堆栈溢出条目中引用的代码:stackoverflow.com/questions/15696415/html-multiple-select-box 被列为示例jsfiddle.net/eUDRV/3 问题是,我没有得到我对数据库中反映的表所做的更改。例如,如果我将一个设备移动到表的左侧,我希望将外键关系设置为空;我希望删除设备和维护之间的关系,同时保留设备和维护表。