diff options
| author | Tom Christie | 2014-11-05 15:51:45 +0000 | 
|---|---|---|
| committer | Tom Christie | 2014-11-05 15:51:45 +0000 | 
| commit | 73daf407150b4d0c456b529c4d9bba0e035fc370 (patch) | |
| tree | 16b718c8b43b5d6b26118ca53b62197ebc05b757 /rest_framework/fields.py | |
| parent | 49fae230005bba4607f425d90de77363d6b8659e (diff) | |
| download | django-rest-framework-73daf407150b4d0c456b529c4d9bba0e035fc370.tar.bz2 | |
ModelField should support max_length. Closes #2018.
Diffstat (limited to 'rest_framework/fields.py')
| -rw-r--r-- | rest_framework/fields.py | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 363b684f..b554f238 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1175,10 +1175,20 @@ class ModelField(Field):      This is used by `ModelSerializer` when dealing with custom model fields,      that do not have a serializer field to be mapped to.      """ +    default_error_messages = { +        'max_length': _('Ensure this field has no more than {max_length} characters.'), +    } +      def __init__(self, model_field, **kwargs):          self.model_field = model_field          kwargs['source'] = '*' +        # The `max_length` option is supported by Django's base `Field` class, +        # so we'd better support it here. +        max_length = kwargs.pop('max_length', None)          super(ModelField, self).__init__(**kwargs) +        if max_length is not None: +            message = self.error_messages['max_length'].format(max_length=max_length) +            self.validators.append(MaxLengthValidator(max_length, message=message))      def to_internal_value(self, data):          rel = getattr(self.model_field, 'rel', None) | 
