【发布时间】:2015-11-27 10:26:27
【问题描述】:
鉴于下面的 django 模型,是否可以自动将字段的子集更新为 RadioSelect 而不是默认的 Select?
class ExampleModel(models.Model):
field1_radios = models.CharField(max_length=1, choices=DEFAULT_CHOICES)
field2_radios = models.CharField(max_length=1, choices=DEFAULT_CHOICES)
field3_radios = models.CharField(max_length=1, choices=DEFAULT_CHOICES)
field4_radios = models.CharField(max_length=1, choices=DEFAULT_CHOICES)
field5 = models.CharField(max_length=50)
...
我可以通过以下方式手动实现:
class ExampleForm(forms.ModelForm):
class Meta:
model = ExampleModel
widgets = {
'field1_radios': forms.RadioSelect(),
'field2_radios': forms.RadioSelect(),
'field3_radios': forms.RadioSelect(),
'field4_radios': forms.RadioSelect()}
当我尝试自动创建小部件时,选择会丢失(并且未呈现单选按钮):
def custom_callback(f, *args, **kwargs):
if f.name.endswith('_radios'):
formfield = f.formfield()
formfield.widget = forms.RadioSelect()
return formfield
else:
return f.formfield()
class ExampleForm(forms.ModelForm):
formfield_callback = custom_callback
class Meta:
model = ExampleModel
【问题讨论】:
标签: django