我们从Python开源项目中,提取了以下3个代码示例,用于说明如何使用rest_framework.serializers.DecimalField()。
def test_should_decimal_convert_float(): assert_conversion(serializers.DecimalField, graphene.Float, max_digits=4, decimal_places=2)
def field_to_schema(field): title = force_text(field.label) if field.label else '' description = force_text(field.help_text) if field.help_text else '' if isinstance(field, serializers.ListSerializer): child_schema = field_to_schema(field.child) return coreschema.Array( items=child_schema, title=title, description=description ) elif isinstance(field, serializers.Serializer): return coreschema.Object( properties=OrderedDict([ (key, field_to_schema(value)) for key, value in field.fields.items() ]), title=title, description=description ) elif isinstance(field, serializers.ManyRelatedField): return coreschema.Array( items=coreschema.String(), title=title, description=description ) elif isinstance(field, serializers.RelatedField): return coreschema.String(title=title, description=description) elif isinstance(field, serializers.MultipleChoiceField): return coreschema.Array( items=coreschema.Enum(enum=list(field.choices.keys())), title=title, description=description ) elif isinstance(field, serializers.ChoiceField): return coreschema.Enum( enum=list(field.choices.keys()), title=title, description=description ) elif isinstance(field, serializers.BooleanField): return coreschema.Boolean(title=title, description=description) elif isinstance(field, (serializers.DecimalField, serializers.FloatField)): return coreschema.Number(title=title, description=description) elif isinstance(field, serializers.IntegerField): return coreschema.Integer(title=title, description=description) if field.style.get('base_template') == 'textarea.html': return coreschema.String( title=title, description=description, format='textarea' ) return coreschema.String(title=title, description=description)
def get_field_info(self, field): """ Given an instance of a serializer field, return a dictionary of metadata about it. """ field_info = collections.OrderedDict() field_info['type'] = self.label_lookup[field] field_info['required'] = getattr(field, 'required', False) attrs = [ 'read_only', 'label', 'help_text', 'allow_null', 'min_length', 'max_length', 'min_value', 'max_value', ] # Handle default attribute default_value = getattr(field, 'default') if (default_value is not empty): field_info['default'] = force_text( default_value, strings_only=True) for attr in attrs: value = getattr(field, attr, None) if value is not None and value != '': field_info[attr] = force_text(value, strings_only=True) if hasattr(field, 'choices'): field_info['choices'] = [ { 'value': choice_value, 'display_name': force_text(choice_name, strings_only=True) } for choice_value, choice_name in field.choices.items() ] # handle RegexField if isinstance(field, serializers.RegexField): pattern = None for validator in field.validators: if isinstance(validator, RegexValidator): pattern = validator.regex.pattern break field_info['pattern'] = force_text(pattern, strings_only=True) # handle DecimalField if isinstance(field, serializers.DecimalField): for attr in ('max_digits', 'decimal_places'): field_info[attr] = force_text( getattr(field, attr), strings_only=True) return field_info