improved get_or_create

This commit is contained in:
Florian Schlachter 2010-01-30 22:01:43 +01:00
parent 8d953f0bcb
commit b3cc2f990a

View File

@ -296,14 +296,16 @@ class QuerySet(object):
return mongo_query return mongo_query
def get_or_create(self, **kwargs): def get_or_create(self, **kwargs):
"""Retreive unique object or create with paras, if it doesn't exist """Retreive unique object or create, if it doesn't exist
""" """
defaults = kwargs.get('defaults', {})
if kwargs.has_key('defaults'):
del kwargs['defaults']
dataset = self.filter(**kwargs) dataset = self.filter(**kwargs)
cnt = dataset.count() cnt = dataset.count()
if cnt == 0: if cnt == 0:
if kwargs.has_key('defaults'): kwargs.update(defaults)
kwargs.update(kwargs.get('defaults'))
del kwargs['defaults']
doc = self._document(**kwargs) doc = self._document(**kwargs)
doc.save() doc.save()
return doc return doc