Django:选择没有固定选择的多个选项

时间:2017-01-10 18:30:11

标签: django django-forms django-templates django-widget

我是Django的新手,我正在尝试使用复选框创建多项选择。问题是我发现的所有示例都有固定的选择,这些选择在表单中指定,我不需要。

更具体地说,让它成为简单汽车经销商应用的典范:

class CarBrand(models.Model):
    name = model.CharField()

class CarModel(models.Model):
    name = model.CharField()
    brand = model.ForeignKey(CarBrand)

我的目标是当我进入奥迪页面时,我会选择A3,A4,A5,但是当我进入宝马的页面时,我会得到选项M3,M4,M5。点击提交后,它应该发送所有已选择的车型。

1 个答案:

答案 0 :(得分:1)

为表单指定一个__init__方法,将CarBrand作为参数,然后将查询集设置为基于:

class CarForm(forms.Form):
    def __init__(self, car_brand, *args, **kwargs):
        self.fields['cars'] = forms.ModelMultipleChoiceField(
            queryset=CarModel.objects.filter(brand=car_brand),
            widget=forms.CheckboxSelectMultiple)
        super(CarForm, self).__init__(*args, **kwargs)

现在在您的视图中首先获取页面的相关CarBrand实例,然后使用CarForm(car_brand, request.POST)等创建表单。