Opened 8 years ago

Last modified 8 years ago

#27264 closed Bug

Model Meta is overwriten by abstract parent class — at Initial Version

Reported by: luxcem Owned by: nobody
Component: Database layer (models, ORM) Version: 1.10
Severity: Normal Keywords: models meta inheritance
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Hi, it seems to be an actual django bug, the example at the address
https://docs.djangoproject.com/en/1.10/topics/db/models/#meta-inheritance
does not work correctly,

from django.db import models

class BaseCategory(models.Model):

title = models.CharField(max_length=100)

class Meta:

abstract = True
ordering = title

class Category(BaseCategory):

name = models.CharField(max_length=100)

class Meta(BaseCategory.Meta):

ordering = name
db_table = 'samble'

Category.Meta.ordering is equal to title, Category.Meta.db_table is
undefined and Category.Meta.abstract is correctly set to false, in fact
Category.Meta is of type BaseCategory.Meta.

A stranger behavior is when abstract = True is added to the subclass :

class Category(BaseCategory):

name = models.CharField(max_length=100)

class Meta(BaseCategory.Meta):

abstract = True
ordering = name
db_table = 'sample'

Now the behavior is correct (if abstract was not set) :
Category.Meta.db_table = 'sample', Category.Meta.ordering = name but
Category.Meta.abstract = False, Category.Meta is of type Category.Meta

So additionally it is impossible to create an abstract class inheriting
an abstract class.

Tested with django 1.8, 1.9, 1.10, 1.10.1 and python 2.7, 3.4

Change History (0)

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