Django,ModelMultipleChoiceField 中的初始值仅设置为禁用
Django, initial values in ModelMultipleChoiceField set to disabled only
我有如下表格和模型。我正在使用 Django 1.6.4。我能够使用基于参数的默认选中选项创建多项选择字段:
self.fields["options"].initial
但是如何将这个选中的选项设置为禁用编辑,当我设置时,
self.fields["options"].widget.attrs['disabled']
它使所有字段都被禁用。是否可以在表单中处理它,或者我应该使用 CSS 样式来处理它。
class Option(models.Model):
name = models.CharField(max_length=20, verbose_name="Name", unique=True)
class Device(models.Model):
options = models.ManyToManyField(Option, null=True, blank=True)
serial_number = models.CharField(max_length=20, verbose_name="Serial number", unique=True)
class EditDeviceForm(forms.Form):
serial_number = forms.CharField(label="Serial number:")
options = forms.ModelMultipleChoiceField(label="Options:",
widget=forms.CheckboxSelectMultiple(),
queryset=Option.objects.all())
def __init__(self, *args, **kwargs):
super(EditDeviceForm, self).__init__(*args, **kwargs)
self.fields["options"].initial = Option.objects.filter(device__in = Device.objects.filter(serial_number=s_number))
#self.fields["options"].widget.attrs['disabled'] = "disabled"
至于 RadioSelect,您可以在模板中遍历所有复选框并向其应用一些特定数据。
我有如下表格和模型。我正在使用 Django 1.6.4。我能够使用基于参数的默认选中选项创建多项选择字段:
self.fields["options"].initial
但是如何将这个选中的选项设置为禁用编辑,当我设置时,
self.fields["options"].widget.attrs['disabled']
它使所有字段都被禁用。是否可以在表单中处理它,或者我应该使用 CSS 样式来处理它。
class Option(models.Model):
name = models.CharField(max_length=20, verbose_name="Name", unique=True)
class Device(models.Model):
options = models.ManyToManyField(Option, null=True, blank=True)
serial_number = models.CharField(max_length=20, verbose_name="Serial number", unique=True)
class EditDeviceForm(forms.Form):
serial_number = forms.CharField(label="Serial number:")
options = forms.ModelMultipleChoiceField(label="Options:",
widget=forms.CheckboxSelectMultiple(),
queryset=Option.objects.all())
def __init__(self, *args, **kwargs):
super(EditDeviceForm, self).__init__(*args, **kwargs)
self.fields["options"].initial = Option.objects.filter(device__in = Device.objects.filter(serial_number=s_number))
#self.fields["options"].widget.attrs['disabled'] = "disabled"
至于 RadioSelect,您可以在模板中遍历所有复选框并向其应用一些特定数据。