Opened 15 years ago

Closed 9 years ago

#8108 closed Bug (fixed)

Abstract Base Classes Shouldn't Trigger Auto-"app_label" Generation

Reported by: brooks.travis@… Owned by: nobody
Component: Database layer (models, ORM) Version: dev
Severity: Normal Keywords: app_label, abstract-base-class
Cc: brooks.travis@… Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

For some reason, importing an abstract base class causes Django to try and create an "app_label" for it. This isn't an issue, apparently, for ABCs defined in an app-level models.py module, but it causes an error (IndexError) if the ABC is in a top-level module in the python path. The current "fix" is to either move the ABC into an app's models.py file (not good for code re-use/separation) or supply a value for "app_label" in the ABC's class Meta. Perhaps adding a test to app_label generation that tests for _meta.abstract and skips on True might be a good idea?

Attachments (1)

8108.diff (1.6 KB) - added by evan_schulz 15 years ago.

Download all attachments as: .zip

Change History (11)

Changed 15 years ago by evan_schulz

Attachment: 8108.diff added

comment:1 Changed 15 years ago by evan_schulz

Even if it is decided that all models should be defined within app-level modules it would be nice to have something better than an IndexError to point users at what the problem is. Attached is a very quick, minimally-tested patch with both changes included.

comment:2 Changed 15 years ago by adamfast

milestone: post-1.0
Triage Stage: UnreviewedDesign decision needed

comment:3 Changed 15 years ago by Malcolm Tredinnick

milestone: post-1.01.0 maybe

I don't like the patch (we should just not have an app name for ABCs), but the idea has merit because it allows more flexible design. Worth doing for 1.0 if we have time.

comment:4 Changed 15 years ago by Jacob

milestone: 1.0 maybepost-1.0
Triage Stage: Design decision neededAccepted

Malcolm now says that we don't have time.

comment:5 Changed 15 years ago by (none)

milestone: post-1.0

Milestone post-1.0 deleted

comment:6 Changed 13 years ago by Luke Plant

Severity: Normal
Type: Bug

comment:7 Changed 12 years ago by Aymeric Augustin

UI/UX: unset

Change UI/UX from NULL to False.

comment:8 Changed 12 years ago by Aymeric Augustin

Easy pickings: unset

Change Easy pickings from NULL to False.

comment:9 Changed 11 years ago by Aymeric Augustin

Component: Core (Other)Database layer (models, ORM)

comment:10 Changed 9 years ago by Aymeric Augustin

Resolution: fixed
Status: newclosed

This problem came up during the app-loading refactor and was fixed. See #21794 for details.

Note: See TracTickets for help on using tickets.
Back to Top