Django如何访问抽象的Base模型局部变量



我已经定义了这个抽象的基本模型如下:

class ActivityAbstractBaseModel(models.Model):
POOR = 'PR'
FAIR = 'FA'
MEDIOCRE = 'ME'
GOOD_ENOUGH = 'GE'
GOOD = 'GO'
VERY_GOOD = 'VG'
EXCELLENT = 'EX'
STATE = [
(POOR, 'Poor'),
(FAIR, 'Fair'),
(MEDIOCRE,'Mediocre' ),
(GOOD_ENOUGH, 'Good Enough' ),
(GOOD, 'Good'),
(VERY_GOOD, 'Very Good'),
(EXCELLENT, 'Excellent'),
]
speaking = models.CharField(max_length=50, choices=STATE, default=GOOD)

然后继承这个抽象模型,如下所示,并添加新的字段writing

class Fluency(ActivityAbstractBaseModel):
writing = models.CharField(max_length=50, choices=STATE, default=GOOD)

现在,这个新字段writing试图访问在抽象类中创建的变量GOODSTATE,但我有NameError异常。有办法得到这些变量吗?

虽然你的类将继承这些类变量,但是代码中你不能在定义类的地方直接引用它们(因为它们不存在于那个作用域中)。相反,你可以在类声明中引用它们为ActivityAbstractBaseModel.GOOD等。

class Fluency(ActivityAbstractBaseModel):
writing = models.CharField(max_length=50, choices=ActivityAbstractBaseModel.STATE, default=ActivityAbstractBaseModel.GOOD)
print(Fluency.GOOD) # This works properly

最新更新