我正在为我的网站使用一个继承的建模模式,它将每个媒体元素放在一个共同的PolyModel基础下,每个不同的元素都是这样的:
class STSeasonMedia(polymodel.PolyModel):
season = db.ReferenceProperty(STSeason,collection_name='related_media')
description = db.StringProperty()
visible = db.BooleanProperty(default=True)
priority = db.IntegerProperty(default=10)
所以我希望“继承”模型有一些其他字段,但也有不同的默认值,例如:
class STVideo(STSeasonMedia):
video_id = db.StringProperty()
provider = db.StringProperty()
priority = db.IntegerProperty(default = 100)
class STThumb(STSeasonMedia):
picture = db.ReferenceProperty(STPicture,collection_name='thumbs')
url = db.StringProperty()
size = db.StringProperty()
class STNote(STSeasonMedia):
content = db.TextProperty()
visible = db.BooleanProperty(default=False)
priority = db.IntegerProperty(default = 1)
有没有办法设置这个不同的默认值,它们可能会在之后发生变化,但在开始时必须通过这些值。有什么想法吗?
答案 0 :(得分:0)
我认为您最好的解决方案可能是为您的派生模型提供__init__
方法。如果用户未提供任何属性,它可以为某些属性提供修改后的默认值。
例如,您想要使用不同默认值priority
的STVideo类应该能够使用它:
def __init__(self, priority=100, **kwargs):
super(STVideo, self).__init__(priority=priority, **kwargs)