使用多表继承,我有两个模型:
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"
。换句话说,我想在模型内的继承字段choices
上设置 kwarg 。从粗略的互联网搜索来看,Django 目前似乎不允许模型子类覆盖父级的字段。color
Bluebird
在为子类定义可接受的选择时,如何保留color
对父类中字段的访问权限?
编辑:这个问题的重点是 Django < 1.8。在 1.8 中,添加了为字段的choices
kwarg 传递可调用对象的能力,虽然这很好,但我正在处理一个尚未升级的系统,目前升级不是一个选项。