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)
| 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 |
no test coverage detected