У меня есть следующие модели:
app1
Код: Выделить всё
class IsPinnable(models.Model):
is_pinned = models.BooleanField(default=False)
pin_after_expiry_day_count = models.DurationField(default=0)
class Meta:
abstract = True
indexes = [
models.Index(fields=['is_pinned']),
]
class IsModeratable(models.Model):
approved = models.BooleanField(default=False)
target_count_trigger = models.PositiveSmallIntegerField()
positive_pass_count = models.PositiveSmallIntegerField(default=0)
negative_pass_count = models.PositiveSmallIntegerField(default=0)
# Other fields and methods ...
def save(self, *args, **kwargs):
# TODO: Sanity check on pass_count and trigger sizes
# ...
super().save(*args, **kwargs)
class Meta:
abstract = True
permissions = (
("moderate_item", "can moderate item"),
("reset_moderation", "can (re)moderate a moderated item"),
)
indexes = [
models.Index(fields=['approved']),
]
class MyComponent(IsPinnable, IsModeratable):
# some fields and methods ...
class Meta(IsPinnable.Meta, IsModeratable.Meta):
abstract = True
# other stuff ...
Код: Выделить всё
from app1.models import MyComponent
class Foo(MyComponent):
# some fields and methods ...
class Meta(MyComponent.Meta):
abstract = False
Однако, когда я проверил базу данных (через psql), я обнаружил, что, хотя таблица app2_foo содержала все поля, описанные в ее родительском элементе class, индексы не переносились из родительских классов, как следует из документации.
Что мне не хватает? и как мне получить индексы, ограничения и разрешения, определенные в родительских классах, для распространения на подклассы?
Подробнее здесь: https://stackoverflow.com/questions/675 ... ibutes-are
Мобильная версия