Opened 16 years ago

Closed 10 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 16 years ago.

Download all attachments as: .zip

Change History (11)

by evan_schulz, 16 years ago

Attachment: 8108.diff added

comment:1 by evan_schulz, 16 years ago

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 by adamfast, 16 years ago

milestone: post-1.0
Triage Stage: UnreviewedDesign decision needed

comment:3 by Malcolm Tredinnick, 16 years ago

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 by Jacob, 16 years ago

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

Malcolm now says that we don't have time.

comment:5 by (none), 15 years ago

milestone: post-1.0

Milestone post-1.0 deleted

comment:6 by Luke Plant, 13 years ago

Severity: Normal
Type: Bug

comment:7 by Aymeric Augustin, 12 years ago

UI/UX: unset

Change UI/UX from NULL to False.

comment:8 by Aymeric Augustin, 12 years ago

Easy pickings: unset

Change Easy pickings from NULL to False.

comment:9 by Aymeric Augustin, 11 years ago

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

comment:10 by Aymeric Augustin, 10 years ago

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