Django的contrib_to_class方法可以用于抽象模型吗?

时间:2018-01-09 16:33:14

标签: python django python-3.x

有没有办法将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创建历史模型。有没有办法以某种方式让它为每个孩子创造一个?

0 个答案:

没有答案