Browse Source

Fixed #10347 -- Fixed incorrect AttributeError raised when attempting to access a FileField without an instance. Thanks for the report and patch dc.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@9902 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Karen Tracey 16 years ago
parent
commit
5f9ac28856
2 changed files with 7 additions and 1 deletions
  1. 1 1
      django/db/models/fields/files.py
  2. 6 0
      tests/modeltests/files/models.py

+ 1 - 1
django/db/models/fields/files.py

@@ -122,7 +122,7 @@ class FileDescriptor(object):
 
     def __get__(self, instance=None, owner=None):
         if instance is None:
-            raise AttributeError, "%s can only be accessed from %s instances." % (self.field.name(self.owner.__name__))
+            raise AttributeError("The '%s' attribute can only be accessed from %s instances." % (self.field.name, owner.__name__))
         file = instance.__dict__[self.field.name]
         if isinstance(file, basestring) or file is None:
             # Create a new instance of FieldFile, based on a given file name

+ 6 - 0
tests/modeltests/files/models.py

@@ -35,6 +35,12 @@ class Storage(models.Model):
     default = models.FileField(storage=temp_storage, upload_to='tests', default='tests/default.txt')
 
 __test__ = {'API_TESTS':"""
+# Attempting to access a FileField from the class raises a descriptive error
+>>> Storage.normal
+Traceback (most recent call last):
+...
+AttributeError: The 'normal' attribute can only be accessed from Storage instances.
+
 # An object without a file has limited functionality.
 
 >>> obj1 = Storage()