使用多表继承,我有两个模型:
class Bird(models.Model):
color = models.CharField()
class Bluebird(Bird):
...
使用这些模型,我可以这样做:
birds = Bird.objects.all()
for bird in birds:
print bird.color
这非常简单,但我不喜欢在某些情况下允许人们定义任意颜色值 . 例如,我想阻止用户创建 Bluebird
对象,其颜色字段设置为除 "blue"
之外的任何其他对象,或者在极少数情况下, "grey"
或 "brown"
. 换句话说,我想在 Bluebird
模型中的继承的 color
字段上设置 choices
kwarg . 从粗略的互联网搜索来看,似乎Django目前不允许模型子类覆盖父类的字段 .
在定义子类中可接受的选项时,如何保留对父类中 color
字段的访问权限?
编辑:这个问题集中在Django <1.8 . 在1.8中,添加了为字段的 choices
kwarg传递callable的能力,虽然这样很好,但是我还没有升级,升级目前不是一个选项 .
1 回答
使用 property .
您可以为每个模型定义颜色值,然后将其作为属性返回,如果颜色将被修复,则在数据库中不需要它 .