Browse Source

Doc'd that model instances with pk=None don't compare equal.

Adam Chainz 8 years ago
parent
commit
224fe22bf1
1 changed files with 13 additions and 4 deletions
  1. 13 4
      docs/ref/models/instances.txt

+ 13 - 4
docs/ref/models/instances.txt

@@ -638,9 +638,10 @@ with :func:`~django.utils.encoding.python_2_unicode_compatible` as shown above.
 .. method:: Model.__eq__()
 
 The equality method is defined such that instances with the same primary
-key value and the same concrete class are considered equal. For proxy
-models, concrete class is defined as the model's first non-proxy parent;
-for all other models it is simply the model's class.
+key value and the same concrete class are considered equal, except that
+instances with a primary key value of ``None`` aren't equal to anything except
+themselves. For proxy models, concrete class is defined as the model's first
+non-proxy parent; for all other models it's simply the model's class.
 
 For example::
 
@@ -656,10 +657,18 @@ For example::
     class MultitableInherited(MyModel):
         pass
 
+    # Primary keys compared
     MyModel(id=1) == MyModel(id=1)
+    MyModel(id=1) != MyModel(id=2)
+    # Primay keys are None
+    MyModel(id=None) != MyModel(id=None)
+    # Same instance
+    instance = MyModel(id=None)
+    instance == instance
+    # Proxy model
     MyModel(id=1) == MyProxyModel(id=1)
+    # Multi-table inheritance
     MyModel(id=1) != MultitableInherited(id=1)
-    MyModel(id=1) != MyModel(id=2)
 
 ``__hash__()``
 --------------