#19688 closed Bug (fixed)
It's not possible to use `six.with_metaclass` to subclass `models.Model` with a custom metaclass.
Reported by: | Simon Charette | Owned by: | Simon Charette |
---|---|---|---|
Component: | Python 3 | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
A couple of django apps in the wild subclass models.base.BaseModel
in order to provide some extra functionality.
If those apps are ever ported to support PY2 and PY3 in the same code base using six they will have to use six.with_metaclass
to achieve it.
Unfortunately, models.base.BaseModel.__new__
chokes when a model is defined this way:
from django.db import models from django.utils import six class CustomBaseModel(models.base.BaseModel): pass class CustomModel(six.with_metaclass(CustomBaseModel, models.Model)): pass
because the 'NewBase
' checks don't take into account this case.
Attachments (1)
Change History (8)
comment:1 by , 12 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
by , 12 years ago
Attachment: | 0001-Fixed-19688-Allow-model-subclassing-with-a-custom-me.patch added |
---|
comment:2 by , 12 years ago
Has patch: | set |
---|
comment:3 by , 12 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:4 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
All tests pass on Python 2.7.3 SQLite.