Django:用非固定选项检查多项选择

Django:用非固定选项检查多项选择,django,django-forms,django-templates,django-widget,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(CarBra

我是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选项。单击“提交”按钮后,它将发送所选的所有车型。

为表单提供一个
\uuuuu init\uuuuuu
方法,该方法获取一个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\u brand,request.POST)
等创建表单。

您所说的固定选项是什么意思?通常,所有的复选框都有对应实例的id,所以它们不是固定的。我的意思是,我没有一个静态字典可供选择。选择取决于哪个用户登录以及他/她在哪个页面打开表单。如示例所示,如果打开BMW页面,M3、M4、M5将是选项,但如果打开奥迪页面,将显示其他选项。这正是我所需要的。谢谢。如何访问模板中的CarModel字段?我只得到选项标签,但每个选项都需要其他字段。我正在努力实现这样的目标: