MCPcopy
hub / github.com/django-commons/django-polymorphic / save

Method save

src/polymorphic/models.py:122–147  ·  view source on GitHub ↗

Calls :meth:`pre_save_polymorphic` and saves the model.

(
        self,
        force_insert: bool | tuple[ModelBase, ...] = False,
        force_update: bool = False,
        using: str | None = None,
        update_fields: Iterable[str] | None = None,
    )

Source from the content-addressed store, hash-verified

120 self.polymorphic_ctype_id = ctype.pk
121
122 def save(
123 self,
124 force_insert: bool | tuple[ModelBase, ...] = False,
125 force_update: bool = False,
126 using: str | None = None,
127 update_fields: Iterable[str] | None = None,
128 ) -> None:
129 """Calls :meth:`pre_save_polymorphic` and saves the model."""
130 # Determine the database to use via Django's routing infrastructure:
131 # 1. Explicit 'using' parameter takes precedence
132 # 2. Otherwise consult DATABASE_ROUTERS via router.db_for_write()
133 # 3. The router falls back to _state.db, then DEFAULT_DB_ALIAS
134 self.pre_save_polymorphic(
135 using=(
136 using
137 or router.db_for_write(self.__class__, instance=self)
138 or self._state.db
139 or DEFAULT_DB_ALIAS
140 )
141 )
142 return super().save(
143 force_insert=force_insert,
144 force_update=force_update,
145 using=using,
146 update_fields=update_fields,
147 )
148
149 save.alters_data = True # type: ignore[attr-defined]
150

Calls 2

pre_save_polymorphicMethod · 0.95
db_for_writeMethod · 0.80