前言 当我们需要校验选项字段的时候,需用到 ChoiceField 来校验 选项 在 model 模型里面有个字段是选项字段, goods_status 可以有2种状态,0是下架,1是出售中,默认 class ChoiceField 选项字段 ChoiceField 专门用来处理有choices选项的问题,处理起来更高级一点,比如数据库里面有多种状态,但是状态2不希望用户去操作,只让用户添加0和1两种状态 / class ChoiceField(serializers.ChoiceField): """重写ChoiceField""" def to_representation(self 如果只想接收用户传状态名称,可以重写 ChoiceField 的 to_internal_value 方法 def to_internal_value(self, data): 相关的用法可以参考https://stackoverflow.com/questions/28945327/django-rest-framework-with-choicefield
(5, '小系统') ) class TrackSerializer(serializers.ModelSerializer): platform = serializers.ChoiceField # 解决方案 自定义字段类型,重写ChoiceField字段类,并重写to_representation方法,在序列化platform字段时,会调用to_representation方法转换成我们想要的格式 class PlatFormField(serializers.ChoiceField): def to_representation(self, value: Any):
65 BooleanField(Field) 66 ... 67 68 NullBooleanField(BooleanField) 69 ... 70 71 ChoiceField initial=None, 初始值 78 help_text='', 帮助提示 79 80 81 ModelChoiceField(ChoiceField django.forms.models.ModelMultipleChoiceField 90 91 92 93 TypedChoiceField(ChoiceField) lambda val: val 对选中的值进行一次转换 95 empty_value= '' 空值的默认值 96 97 MultipleChoiceField(ChoiceField %f', '%H:%M'] 114 115 FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中 116 path,
*ChoiceField(Field) *单选下拉框 ... Label内容 initial=None, 初始值 help_text='', 帮助提示 ModelChoiceField(ChoiceField django.forms.models.ModelMultipleChoiceField TypedChoiceField(ChoiceField) coerce = lambda val: val 对选中的值进行一次转换 empty_value= '' 空值的默认值 MultipleChoiceField(ChoiceField) %f', '%H:%M'] FilePathField(ChoiceField) *文件选项,目录下文件显示在页面中 提交时是文件路径 path,
hobby = forms.fields.ChoiceField( choices=((1, "篮球"), (2, "足球"), (3, "双色球"), ), label ChoiceField(Field) ... django.forms.models.ModelMultipleChoiceField TypedChoiceField(ChoiceField) coerce = lambda val: val 对选中的值进行一次转换 empty_value= '' 空值的默认值 MultipleChoiceField(ChoiceField) %f', '%H:%M'] FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中 path, 文件夹路径
hobby = forms.fields.ChoiceField( choices=((1, "篮球"), (2, "足球"), (3, "双色球"), ), label ChoiceField(Field) ... django.forms.models.ModelMultipleChoiceField TypedChoiceField(ChoiceField) coerce = lambda val: val 对选中的值进行一次转换 empty_value= '' 空值的默认值 MultipleChoiceField(ChoiceField) %f', '%H:%M'] FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中 path, 文件夹路径
hobby = forms.fields.ChoiceField( choices=((1, "篮球"), (2, "足球"), (3, "双色球"), ), label ChoiceField(Field) ... django.forms.models.ModelMultipleChoiceField TypedChoiceField(ChoiceField) coerce = lambda val: val 对选中的值进行一次转换 empty_value= '' 空值的默认值 MultipleChoiceField(ChoiceField) %f', '%H:%M'] FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中 path, 文件夹路径
request.POST, request.FILES) 15.URLField(Field) 16.BooleanField(Field) 17.NullBooleanField(BooleanField) 18.ChoiceField Label内容 initial=None, 初始值 help_text='', 帮助提示 19.ModelChoiceField(ChoiceField django.forms.models.ModelMultipleChoiceField 21.TypedChoiceField(ChoiceField) coerce = lambda val: val 对选中的值进行一次转换 empty_value= '' 空值的默认值 22.MultipleChoiceField(ChoiceField) 23.TypedMultipleChoiceField %f', '%H:%M'] 27.FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中 path, 文件夹路径 match=None
hobby = forms.fields.ChoiceField( choices=((1, "篮球"), (2, "足球"), (3, "双色球"), ), label ChoiceField(Field) ... django.forms.models.ModelMultipleChoiceField TypedChoiceField(ChoiceField) coerce = lambda val: val 对选中的值进行一次转换 empty_value= '' 空值的默认值 MultipleChoiceField(ChoiceField) %f', '%H:%M'] FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中 path, 文件夹路径
widgets 3 from django.forms import fields 4 5 6 class MyForm(Form): 7 8 user = fields.ChoiceField ChoiceField(Field) ... django.forms.models.ModelMultipleChoiceField TypedChoiceField(ChoiceField) coerce = lambda val: val 对选中的值进行一次转换 empty_value= '' 空值的默认值 MultipleChoiceField(ChoiceField) %f', '%H:%M'] FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中 path, 文件夹路径
hobby = forms.ChoiceField( choices=((1, "篮球"), (2, "足球"), (3, "双色球"), ), label="爱好", ChoiceField(Field) ... django.forms.models.ModelMultipleChoiceField TypedChoiceField(ChoiceField) coerce = lambda val: val 对选中的值进行一次转换 empty_value= '' 空值的默认值 MultipleChoiceField(ChoiceField) %f', '%H:%M'] FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中 path, 文件夹路径
ChoiceField(Field) ... django.forms.models.ModelMultipleChoiceField TypedChoiceField(ChoiceField) coerce = lambda val: val 对选中的值进行一次转换 empty_value= '' 空值的默认值 MultipleChoiceField(ChoiceField %f', '%H:%M'] FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中 path, 文件夹路径 widget=widgets.RadioSelect(choices=((1,'上海'),(2,'北京'),)) # ) # 单radio,值为字符串 # user = fields.ChoiceField
forms.IntegerField() email = forms.EmailField() is_married = forms.BooleanField(required=False) ChoiceField caption = fields.CharField(error_messages={'required':'班级名称不能为空'}) # headmaster = fields.ChoiceField fields.CharField(error_messages={'required':'班级名称不能为空'}) # headmaster = fields.ChoiceField (choices=[(1,'娜娜',)]) headmaster_id = fields.ChoiceField(choices=[]) fields.CharField(error_messages={'required':'班级名称不能为空'}) # headmaster = fields.ChoiceField
invalid": "格式错误", }, widget=forms.widgets.PasswordInput) gender = forms.fields.ChoiceField ): field_obj = self.fields[field] if not isinstance(field_obj, forms.fields.ChoiceField
fields from django.core.validators import RegexValidator class MyForm(Form): user = fields.ChoiceField # widget=widgets.RadioSelect(choices=((1,'上海'),(2,'北京'),)) # ) # 单radio,值为字符串 # user = fields.ChoiceField =2, # widget=widgets.Select(choices=((1,'上海'),(2,'北京'),)) # ) # 单select,值为字符串 # user = fields.ChoiceField
ChoiceField(Field) ... Label内容 initial=None, 初始值 help_text='', 帮助提示 ModelChoiceField(ChoiceField django.forms.models.ModelMultipleChoiceField TypedChoiceField(ChoiceField) coerce = lambda val: val 对选中的值进行一次转换 empty_value= '' 空值的默认值 MultipleChoiceField(ChoiceField) %f', '%H:%M'] FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中 path, 文件夹路径
serializers.HiddenField( default=serializers.CurrentUserDefault() ) status = serializers.ChoiceField serializers.HiddenField( default=serializers.CurrentUserDefault() ) status = serializers.ChoiceField
这里就不一一赘述了,具体详见官网: https://docs.djangoproject.com/zh-hans/2.0/ref/forms/api/#django.forms.BoundField 多选字段 ChoiceField 初始值 help_text='' # 帮助提示 from django.forms.models import ModelChoiceField # 单选 ModelChoiceField(ChoiceField fields.CharField( initial=2, widget=widgets.RadioSelect(choices=((1,'一班'),(2,'二班'),)) ) # or user = fields.ChoiceField import Form from django.core.validators import RegexValidator class Form类(Form): user = fields.ChoiceField
FileField FileField(max_length=None, allow_empty_file=False, **kwargs) BooleanField BooleanField() ChoiceField ChoiceField(choices=(),**kwargs) ComboField ComboField(fields,**kwargs) MultiValueField MultiValueField (label='性别',choices=choices_item,initial=1)#下拉列表 sex2 = forms.ChoiceField(label='性别', choices=choices_item ,widget=forms.RadioSelect,initial=1)#单选框 sex3 = forms.ChoiceField(label='性别', choices=choices_item (label='性别', choices=choices_item,initial=1,widget=forms.Select)#下拉列表 sex6 = forms.ChoiceField(label
'textarea.html'}) linenos = serializers.BooleanField(required=False) language = serializers.ChoiceField (choices=LANGUAGE_CHOICES, default='python') style = serializers.ChoiceField(choices=STYLE_CHOICES style={'base_template': 'textarea.html'}) # linenos = BooleanField(required=False) # language = ChoiceField 'Gherkin'), ('RobotFramework', 'RobotFramework'), ('abap', 'ABAP'), ('ada', 'Ada')... # style = ChoiceField