MCPcopy
hub / github.com/django/django / get_or_create

Method get_or_create

django/db/models/query.py:1021–1044  ·  view source on GitHub ↗

Look up an object with the given kwargs, creating one if necessary. Return a tuple of (object, created), where created is a boolean specifying whether an object was created.

(self, defaults=None, **kwargs)

Source from the content-addressed store, hash-verified

1019 abulk_update.alters_data = True
1020
1021 def get_or_create(self, defaults=None, **kwargs):
1022 """
1023 Look up an object with the given kwargs, creating one if necessary.
1024 Return a tuple of (object, created), where created is a boolean
1025 specifying whether an object was created.
1026 """
1027 # The get() needs to be targeted at the write database in order
1028 # to avoid potential transaction consistency problems.
1029 self._for_write = True
1030 try:
1031 return self.get(**kwargs), False
1032 except self.model.DoesNotExist:
1033 params = self._extract_model_params(defaults, **kwargs)
1034 # Try to create an object using passed params.
1035 try:
1036 with transaction.atomic(using=self.db):
1037 params = dict(resolve_callables(params))
1038 return self.create(**params), True
1039 except IntegrityError:
1040 try:
1041 return self.get(**kwargs), False
1042 except self.model.DoesNotExist:
1043 pass
1044 raise
1045
1046 get_or_create.alters_data = True
1047

Callers 1

update_or_createMethod · 0.45

Calls 4

getMethod · 0.95
_extract_model_paramsMethod · 0.95
createMethod · 0.95
resolve_callablesFunction · 0.90

Tested by

no test coverage detected