improved get_or_create
This commit is contained in:
parent
8d953f0bcb
commit
b3cc2f990a
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user