|
4 | 4 | from decimal import Decimal
|
5 | 5 | from typing import TYPE_CHECKING, Any
|
6 | 6 |
|
7 |
| -from plain.models import register_model |
| 7 | +from plain.models import Options, register_model |
8 | 8 | from plain.models.backends.base.schema import BaseDatabaseSchemaEditor
|
9 | 9 | from plain.models.backends.ddl_references import Statement
|
10 | 10 | from plain.models.backends.utils import strip_quotes
|
@@ -288,29 +288,27 @@ def is_self_referential(f: Field) -> bool:
|
288 | 288 | # table and solely exists for foreign key reference resolution purposes.
|
289 | 289 | # This wouldn't be required if the schema editor was operating on model
|
290 | 290 | # states instead of rendered models.
|
291 |
| - meta_contents = { |
292 |
| - "package_label": model._meta.package_label, |
293 |
| - "db_table": model._meta.db_table, |
294 |
| - "indexes": indexes, |
295 |
| - "constraints": constraints, |
296 |
| - "models_registry": models_registry, |
297 |
| - } |
298 |
| - meta = type("Meta", (), meta_contents) |
299 |
| - body_copy["Meta"] = meta |
| 291 | + meta_options = Options( |
| 292 | + package_label=model._meta.package_label, |
| 293 | + db_table=model._meta.db_table, |
| 294 | + indexes=indexes, |
| 295 | + constraints=constraints, |
| 296 | + models_registry=models_registry, |
| 297 | + ) |
| 298 | + body_copy["_meta"] = meta_options |
300 | 299 | body_copy["__module__"] = model.__module__
|
301 | 300 | register_model(type(model._meta.object_name, model.__bases__, body_copy)) # type: ignore[arg-type]
|
302 | 301 |
|
303 | 302 | # Construct a model with a renamed table name.
|
304 | 303 | body_copy = copy.deepcopy(body)
|
305 |
| - meta_contents = { |
306 |
| - "package_label": model._meta.package_label, |
307 |
| - "db_table": f"new__{strip_quotes(model._meta.db_table)}", |
308 |
| - "indexes": indexes, |
309 |
| - "constraints": constraints, |
310 |
| - "models_registry": models_registry, |
311 |
| - } |
312 |
| - meta = type("Meta", (), meta_contents) |
313 |
| - body_copy["Meta"] = meta |
| 304 | + meta_options = Options( |
| 305 | + package_label=model._meta.package_label, |
| 306 | + db_table=f"new__{strip_quotes(model._meta.db_table)}", |
| 307 | + indexes=indexes, |
| 308 | + constraints=constraints, |
| 309 | + models_registry=models_registry, |
| 310 | + ) |
| 311 | + body_copy["_meta"] = meta_options |
314 | 312 | body_copy["__module__"] = model.__module__
|
315 | 313 | new_model = type(f"New{model._meta.object_name}", model.__bases__, body_copy)
|
316 | 314 | register_model(new_model) # type: ignore[arg-type]
|
|
0 commit comments