有没有办法将contrib_to_class方法与抽象模型一起使用,以便为每个子项单独执行?
我有以下型号:
class BaseHistoryModel(Model):
change = JSONField(blank=True, verbose_name=_('Change'))
comment = models.TextField(blank=True)
class Meta:
abstract = True
class HistoryHelper:
def contribute_to_class(self, cls, *_args):
self.create_history_model(cls)
def create_history_model(self, cls):
attrs = {'__module__': cls.__module__}
history_model = type(
'{}{}'.format(sender.__name__, 'History'),
(BaseHistoryModel, ), attrs
)
history_model.target = models.ForeignKey(cls)
return history_model
class BaseModel(models.Model):
name = models.CharField()
history = HistoryHelper()
class Meta:
abstract = True
我需要它为BaseModel
的每个孩子创建一个单独的历史模型,但是当我运行makemigrations
时,我得到的是一个更改,它为摘要BaseModel
创建历史模型。有没有办法以某种方式让它为每个孩子创造一个?