Django:检查没有固定选择的多个选择
Django: Check multiple choices with not fixed choices
我是 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。单击提交后,它应该会发送所有已选择的车型。
为表单提供一个 __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)
等创建表单
我是 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。单击提交后,它应该会发送所有已选择的车型。
为表单提供一个 __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)
等创建表单