MCPcopy
hub / github.com/django/django / _extract_model_params

Method _extract_model_params

django/db/models/query.py:1113–1138  ·  view source on GitHub ↗

Prepare `params` for creating a model instance based on the given kwargs; for use by get_or_create().

(self, defaults, **kwargs)

Source from the content-addressed store, hash-verified

1111 aupdate_or_create.alters_data = True
1112
1113 def _extract_model_params(self, defaults, **kwargs):
1114 """
1115 Prepare `params` for creating a model instance based on the given
1116 kwargs; for use by get_or_create().
1117 """
1118 defaults = defaults or {}
1119 params = {k: v for k, v in kwargs.items() if LOOKUP_SEP not in k}
1120 params.update(defaults)
1121 property_names = self.model._meta._property_names
1122 invalid_params = []
1123 for param in params:
1124 try:
1125 self.model._meta.get_field(param)
1126 except exceptions.FieldDoesNotExist:
1127 # It's okay to use a model's property if it has a setter.
1128 if not (param in property_names and getattr(self.model, param).fset):
1129 invalid_params.append(param)
1130 if invalid_params:
1131 raise exceptions.FieldError(
1132 "Invalid field name(s) for model %s: '%s'."
1133 % (
1134 self.model._meta.object_name,
1135 "', '".join(sorted(invalid_params)),
1136 )
1137 )
1138 return params
1139
1140 def _earliest(self, *fields):
1141 """

Callers 1

get_or_createMethod · 0.95

Calls 5

itemsMethod · 0.45
updateMethod · 0.45
get_fieldMethod · 0.45
appendMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected