summaryrefslogtreecommitdiff
path: root/django/db/models/fields/files.py
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2012-06-26 11:14:23 +0200
committerClaude Paroz <claude@2xlibre.net>2012-06-26 18:18:44 +0200
commit05d333ba3bb16af024c11966d2072de38fe9f82f (patch)
treea8fae7de201c3e257cf952187653a5f7b26a76ea /django/db/models/fields/files.py
parentb6c356b7bb97f3d6d4831b31e67868313bbbc090 (diff)
downloaddjango-05d333ba3bb16af024c11966d2072de38fe9f82f.tar.gz
Fixed #18515 -- Conditionally regenerated filename in FileField validation
When a FileField value has been saved, a new validation should not regenerate a new filename when checking the length. Refs #9893.
Diffstat (limited to 'django/db/models/fields/files.py')
-rw-r--r--django/db/models/fields/files.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/django/db/models/fields/files.py b/django/db/models/fields/files.py
index e0c095974d..b0dce381a6 100644
--- a/django/db/models/fields/files.py
+++ b/django/db/models/fields/files.py
@@ -242,7 +242,11 @@ class FileField(Field):
# (ie. upload_to='path/to/upload/dir'), the length of the generated
# name equals the length of the uploaded name plus a constant. Thus
# we can tell the user how much shorter the name should be (roughly).
- length = len(self.generate_filename(model_instance, value.name))
+ if value and value._committed:
+ filename = value.name
+ else:
+ filename = self.generate_filename(model_instance, value.name)
+ length = len(filename)
if self.max_length and length > self.max_length:
error_values = {'extra': length - self.max_length}
raise ValidationError(self.error_messages['max_length'] % error_values)