Opened 12 years ago
Closed 12 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 , 12 years ago
comment:3 by , 12 years ago
Yes yes yes. In fact I'd like to avoid storing these models in the app registry entirely.
comment:4 by , 12 years ago
This will also prevent importing twice the same models through different paths.
comment:5 by , 12 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
This will likely be a problem for deferred queries.