Better BaseDocument equality check when not saved
When 2 instances of a Document had id = None they would be considered equal unless an __eq__ were implemented. We now return False for such case. It now behaves more similar to Django's ORM.
This commit is contained in:
@@ -241,10 +241,12 @@ class BaseDocument(object):
|
||||
return txt_type('%s object' % self.__class__.__name__)
|
||||
|
||||
def __eq__(self, other):
|
||||
if isinstance(other, self.__class__) and hasattr(other, 'id'):
|
||||
if isinstance(other, self.__class__) and hasattr(other, 'id') and other.id is not None:
|
||||
return self.id == other.id
|
||||
if isinstance(other, DBRef):
|
||||
return self._get_collection_name() == other.collection and self.id == other.id
|
||||
if self.id is None:
|
||||
return self is other
|
||||
return False
|
||||
|
||||
def __ne__(self, other):
|
||||
|
||||
Reference in New Issue
Block a user