From 6e415a5f90dc89e83b0e926f973c629b56642a9c Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sun, 8 Mar 2009 09:59:17 +0000 Subject: [PATCH] Fixed #9508 -- Added an appropriate FileField.__hash__ implementation. Required because we declare a custom __eq__ method. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9997 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/fields/files.py | 4 ++++ tests/regressiontests/file_storage/models.py | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/django/db/models/fields/files.py b/django/db/models/fields/files.py index 7215897f16..cfc434741b 100644 --- a/django/db/models/fields/files.py +++ b/django/db/models/fields/files.py @@ -34,6 +34,10 @@ class FieldFile(File): def __ne__(self, other): return not self.__eq__(other) + def __hash__(self): + # Required because we defined a custom __eq__. + return hash(self.name) + # The standard File contains most of the necessary properties, but # FieldFiles can be instantiated without a name, so that needs to # be checked for here. diff --git a/tests/regressiontests/file_storage/models.py b/tests/regressiontests/file_storage/models.py index 32fb83b348..099c25444e 100644 --- a/tests/regressiontests/file_storage/models.py +++ b/tests/regressiontests/file_storage/models.py @@ -54,6 +54,11 @@ False >>> p.mugshot != p1.mugshot True +Bug #9508: Similarly to the previous test, make sure hash() works as expected +(equal items must hash to the same value). +>>> hash(p.mugshot) == hash(p2.mugshot) +True + # Bug #8175: correctly delete files that have been removed off the file system. >>> import os >>> p2 = Person(name="Fred")