Commit 343fa35a authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
Browse files

Fixed #2936, #6500 -- Added a __hash__() method to Models (since we implement...

Fixed #2936, #6500 -- Added a __hash__() method to Models (since we implement our own __eq__ method).


git-svn-id: http://code.djangoproject.com/svn/django/trunk@7132 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent f1a24be0
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -135,6 +135,9 @@ class Model(object):
    def __ne__(self, other):
        return not self.__eq__(other)

    def __hash__(self):
        return hash(self._get_pk_val())

    def __init__(self, *args, **kwargs):
        dispatcher.send(signal=signals.pre_init, sender=self.__class__, args=args, kwargs=kwargs)

+11 −0
Original line number Diff line number Diff line
@@ -5,6 +5,11 @@
This is a basic model with only two non-primary-key fields.
"""

try:
    set
except NameError:
    from sets import Set as set

from django.db import models

class Article(models.Model):
@@ -389,4 +394,10 @@ year, including Jan. 1 and Dec. 31.
>>> a.save()
>>> Article.objects.get(pk=a.id).headline
u'\u6797\u539f \u3081\u3050\u307f'

# Model instances have a hash function, so they can be used in sets or as
# dictionary keys. Two models compare as equal if their primary keys are equal.
>>> s = set([a10, a11, a12])
>>> Article.objects.get(headline='Article 11') in s
True
"""