From 73daf407150b4d0c456b529c4d9bba0e035fc370 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Wed, 5 Nov 2014 15:51:45 +0000 Subject: ModelField should support max_length. Closes #2018. --- rest_framework/fields.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'rest_framework/fields.py') 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) -- cgit v1.2.3