自定义我的模型多选字段标签不会填充现有值

时间:2017-05-16 15:29:53

标签: django django-forms

TL;博士

自定义django表单字段不填充现有数据

问题

希望这是一个简单的问题。我有一个带有自定义多选字段的表单。

class CustomChoiceField(forms.ModelChoiceField):
    def label_from_instance(self, obj):
        return mark_safe('<b>%s:</b> <span class="context">%s</span>' % (obj.field1, obj.field2))

class MyForm(forms.ModelForm):
    a_field = CustomChoiceField(widget=forms.CheckboxSelectMultiple,
              queryset=MyModel.objects.all(),
              required=False)

这会在我的模板中以我希望的方式获取我的复选框,<span>内有<label>

但是,如果此表单表单具有与之关联的实例,则模型中保存的值不会检查相应的框。也就是说,如果有人选中了box1和box3,但没有选中box2,它会将所有3个复选框都取消选中,即使在管理员中我可以将box1和box3视为已选中。

从我的自定义选择字段更改为Django&#39; ModelMultipleChoiceField摆脱了这个问题。

class MyForm(forms.ModelForm):
    a_field = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,
              queryset=MyModel.objects.all(),
              required=False)

现在我的模板box1和box3显示为已选中。

为什么我的自定义表单字段未显示现有数据?

0 个答案:

没有答案