use*_*156 4 forms django widget
我的模型表单继承自子系统表单.我想限制表单中用户的选择.(特别是名字)我知道我必须使用小部件.但它不起作用.
我必须使用SubsytemForm.
SUBSYSTEM_CHOICES = (a1,a2,a3)
Class Subsystem(models.Model):
name = models.CharField("Name", max_length=20)
class SubsytemForm(forms.ModelForm):
class Meta:
model = Subsystem
widgets = {
'name': ChoiceField(widget=RadioSelect, choices=SUBSYSTEM_CHOICES)
}
Run Code Online (Sandbox Code Playgroud)
来自django模型表单文档:
如果你明确地实例化这样的表单字段,Django假定你想要完全定义它的行为; 因此,不会从相应的模型中绘制默认属性(例如max_length或required).如果要维护模型中指定的行为,则必须在声明表单字段时明确设置相关参数.
您可以尝试:
class SubsytemForm(forms.ModelForm):
name = forms.ChoiceField(widget=RadioSelect, choices= choices )
class Meta:
model = Subsystem
Run Code Online (Sandbox Code Playgroud)
你也可以
class SubsytemForm(forms.ModelForm):
class Meta:
model = Subsystem
def __init__(self, *args, **kwargs):
self.name_choices = kwargs.pop('name_choices', None)
super(SubsytemForm,self).__init__(*args,**kwargs)
self.fields['name'].queryset= self.name_choices
Run Code Online (Sandbox Code Playgroud)
并name_choices
在SubsytemForm
创建中作为参数发送.请记住,选择应该是一个查询集.
另外,您应该阅读如何在Django ModelForm中过滤ForeignKey选项?
归档时间: |
|
查看次数: |
5464 次 |
最近记录: |