是否有人知道如何根据管理页面中“父”选择框的选择自动更新“子”选择框的选项?
问题:我有两个选择框。在第一个我选择的例如一个汽车品牌。一旦我选择了汽车品牌,我想要“孩子”选择框选项来更新该品牌的型号。
我在我的模型中正确使用ForeignKey并且所有模型都是正确的但如果你能给我一些指导来解决这个问题,我将不胜感激。谢谢!
已解决:我使用过smart_selects。 https://github.com/digi604/django-smart-selects
答案 0 :(得分:0)
您可以使用JavaScript和Elementmanipulation执行此操作:
将汽车模型保存到JavaScript Vars:即
<script type="text/javascript">
var porsche = {{ porsche|safe }};
var vw = {{ vw|safe }};
</script>
在JavaScript中,您可以为父选择框指定新的更改方法:
$('#parent_select').change(function(){
changeCars();
});
然后该函数可以操作子选择框:
var newCarList = [];
val =$('#parent_select').val();
if (val=='porsche'){
newCarList = porsche;
}
else if (val == 'vw'){
newCarList = vw;
}
else{
//some Error handling
}
select = document.getElementById('child_select');
while (select.firstChild) {
select.removeChild(select.firstChild);
// to remove all previously added childs (option fields)
}
for (var i = 0; i < newCarList.length; i ++){
var opt = document.createElement('option');
opt.value = newCarList[i];
opt.innerHTML = newCarList[i];
select.appendChild(opt);
//append all new Childs to the child_select
}
这种可能性会起作用但速度很慢,因为对象操作不是最快的方法。 另一种可能性是创建不同的子选择并使用show / hide仅根据parent_select的值显示正确的子选项。
答案 1 :(得分:0)
我已经解决了我的问题。我使用了Django smart_selects。 github.com/digi604/django-smart-selects