有人知道如何根据管理页面中“父”选择框的选择自动更新“子”选择框的选项吗?
问题:我有两个选择框。在第一个中,我选择例如汽车品牌。一旦我选择了汽车品牌,我希望“子”选择框选项更新为该品牌的型号。
我在我的模型中正确使用了 ForeignKey 并且所有模型都是正确的,但如果你能给我一些指导来解决这个问题,我将不胜感激。谢谢!
已解决:我使用了 smart_selects。https://github.com/digi604/django-smart-selects
您可以使用 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
}
这种可能性会起作用,但速度很慢,因为对象操作不是最快的方式。另一种可能性是创建不同的子选择并使用显示/隐藏根据 parent_select 的值仅显示正确的选择。
我已经解决了我的问题。我使用了 Django smart_selects。github.com/digi604/django-smart-selects