Я использую следующий код.
class CommonFunctions(object):
def get_absolute_url(self):
return "/{0}/list/".format(self.__class__.__name__).lower()
def get_fields(self):
return [(field, field.value_to_string(self)) for field in (self.__class__)._meta.fields]
class Meta:
abstract = True
Класс
class Book(models.Model, CommonFunctions):
book_name = models.CharField(max_length=30)
book_area = models.CharField(max_length=30)
Теперь, если я использую это, я получаю ошибку,
ForeignKey
не может определить отношение с абстрактным классом
Но если я использую
class Meta:
abstract = False
в классе Book
, то это работает.
Почемуон наследует true
, если их документация говорит, что он должен наследовать false
?
Django выполняет одну настройку для класса Meta абстрактного базового класса: перед установкой Metaатрибут, он устанавливает abstract=False
.Это означает, что потомки абстрактных базовых классов сами не становятся автоматически абстрактными классами.