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
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/01956d0c-bb9b-430f-8074-5da38efd72dd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment