Opened 11 years ago
Closed 11 years ago
#21711 closed Bug (fixed)
Check for duplicate model names
Reported by: | Aymeric Augustin | Owned by: | nobody |
---|---|---|---|
Component: | Core (Other) | Version: | dev |
Severity: | Normal | Keywords: | app-loading |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
(Extracted from #21681.)
ModelBase.__new__
has an interesting behavior: it checks for a model class with the target name in the app registry and return it instead of creating a new class if found.
# myapp/models.py from django.db import models class MyModel(models.Model): pass first_model_class = MyModel # save a reference class MyModel(models.Model): pass second_model_class = MyModel # save a reference if second_model_class is first_model_class: raise RuntimeError("WTF")
It would be better to raise an error in that case than silently return the first model. See also #21679 which is essentially the same issue for applications.
Change History (5)
comment:1 by , 11 years ago
comment:3 by , 11 years ago
Yes yes yes. In fact I'd like to avoid storing these models in the app registry entirely.
comment:4 by , 11 years ago
This will also prevent importing twice the same models through different paths.
comment:5 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
This will likely be a problem for deferred queries.