Как я могу предотвратить создание исторической модели при наследовании от абстрактной модели?
У меня есть абстрактная базовая модель, модель, ориентированная на компанию, которая включает в себя отслеживание истории с использованием TenantHistoricalRecords:
class CompanyAwareModel(RequestChangeReasonModelMixin, TenantModel, TimeStampedModel, metaclass=CompanyAwareMeta):
tenant_id = 'company_id'
company = models.ForeignKey(Company, on_delete=models.CASCADE)
history = TenantHistoricalRecords(inherit=True)
class Meta:
abstract = True
Чтобы создать вариант этой модели без исторического отслеживания, я определил другую абстрактную модель:
class NoHistoryCompanyAwareModel(CompanyAwareModel):
history = None
class Meta:
abstract = True
Затем я определяю конкретную модель, наследуемую от NoHistoryCompanyAwareModel:
class Counter(NoHistoryCompanyAwareModel):
...
Однако, когда я запускаю makemigrations, Django по-прежнему создает историческую модель счетчика, хотя я явно установил history = None в NoHistoryCompanyAwareModel.
Интересно, что если я не определю модель, учитывающую историю компании, без наследования от CompanyAwareModel, вот так:
class NoHistoryCompanyAwareModel(RequestChangeReasonModelMixin, TenantModel, TimeStampedModel, metaclass=CompanyAwareMeta):
tenant_id = 'company_id'
company = models.ForeignKey(Company, on_delete=models.CASCADE)
history = None
class Meta:
abstract = True
Тогда makemigrations не создает историческую таблицу для Counter.
Вопрос
Почему наследование от модели, поддерживаемой компанией, по-прежнему создает историческую таблицу, даже если явно задано значение history = None? И как я могу гарантировать, что у счетчика нет модели HistoricalCounter, при этом он все еще наследуется от CompanyAwareModel?
Я ожидаю, что когда я унаследую NoHistoryComapnyAwareModel от CompanyAawreModel и установлю для history значение None, это не создаст historicalCounter для моей модели.