From the following models:
{{{#!python
from django.db import models
class AbstractPlace(models.Model):
name = models.CharField(max_length=50)
address = models.CharField(max_length=80)
class Meta:
abstract = True
index_together = (('name', 'address'),)
class Place(AbstractPlace):
pass
class Restaurant(Place):
serves_hot_dogs = models.BooleanField()
serves_pizza = models.BooleanField()
}}}
Seemingly, the concrete model `Place` ends up with the inherited `Meta`
from the abstract parent. After the `Place` model class is created, during
`ModelBase.__new__`), any `Meta` (declared or inherited) should not be
there for concrete classes.
This way, models would never have a `Meta` (unless the modified and
explicitly added Meta, if they're abstract). I added `new_class.Meta =
None` just above `new_class._prepare()` in `ModelBase` and that properly
fixes the issue.
--
Ticket URL: <https://code.djangoproject.com/ticket/22740>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
Comment:
I think that this a issue that must be corrected. To me even the fix seems
good and simple enough. Though you may want to wait until you hear from a
core-dev.
--
Ticket URL: <https://code.djangoproject.com/ticket/22740#comment:1>
* cc: anubhav9042@… (added)
* component: Uncategorized => Database layer (models, ORM)
* type: Uncategorized => Bug
* stage: Unreviewed => Accepted
Comment:
I am marking it as accepted.
--
Ticket URL: <https://code.djangoproject.com/ticket/22740#comment:2>
* status: new => closed
* resolution: => wontfix
Comment:
Your proposal would break code that relies on the currently documented
behaviour: https://docs.djangoproject.com/en/dev/topics/db/models/#meta-
inheritance
We can have a discussion on the django-developers mailing-list about the
advantages and drawbacks of inheriting Meta from abstract parents.
But we can't accept such a backwards-incompatible change without
discussion.
--
Ticket URL: <https://code.djangoproject.com/ticket/22740#comment:3>