2

有人知道如何根据管理页面中“父”选择框的选择自动更新“子”选择框的选项吗?

问题:我有两个选择框。在第一个中,我选择例如汽车品牌。一旦我选择了汽车品牌,我希望“子”选择框选项更新为该品牌的型号。

我在我的模型中正确使用了 ForeignKey 并且所有模型都是正确的,但如果你能给我一些指导来解决这个问题,我将不胜感激。谢谢!

已解决:我使用了 smart_selects。https://github.com/digi604/django-smart-selects

4

2 回答 2

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
}

这种可能性会起作用,但速度很慢,因为对象操作不是最快的方式。另一种可能性是创建不同的子选择并使用显示/隐藏根据 parent_select 的值仅显示正确的选择。

于 2014-07-11T10:28:32.530 回答
0

我已经解决了我的问题。我使用了 Django smart_selects。github.com/digi604/django-smart-selects

于 2014-07-13T09:15:22.677 回答