如何在抽象模型中重新定义属性?

时间:2019-11-20 13:33:21

标签: django django-models

你好,我有两个模型

class A(models.Model):
    slug = models.SlugField()

     class Meta:
        abstract = True


class B(A):
    slug = models.CharField()

    class Meta:
        abstract = True

我收到错误AttributeError: Manager isn't available; B is abstract

如何在抽象类中重新定义属性? class A不能更改

1 个答案:

答案 0 :(得分:1)

抽象模型没有管理器,因为它们没有映射到数据库表。它们用于定义可重用的混合,您可以将它们组合成具体的模型。要使B为具体模型,请删除abstract标志,然后在其实例上定义一个objects属性。

class A(models.Model):
    slug = models.SlugField()

     class Meta:
        abstract = True


class B(A):
    slug = models.CharField()

顺便说一句,就模型而言,这是毫无意义的层次结构,因为slug上的B字段会覆盖从slug继承的A字段因此,当前两个定义之间的共享自定义功能为零。您也可以直接从B继承models.Model