你好,我有两个模型
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
不能更改
答案 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
。