Model兄弟Google App Engine的默认值不同

时间:2012-11-22 05:05:06

标签: python google-app-engine model

我正在为我的网站使用一个继承的建模模式,它将每个媒体元素放在一个共同的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)

有没有办法设置这个不同的默认值,它们可能会在之后发生变化,但在开始时必须通过这些值。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为您最好的解决方案可能是为您的派生模型提供__init__方法。如果用户未提供任何属性,它可以为某些属性提供修改后的默认值。

例如,您想要使用不同默认值priority的STVideo类应该能够使用它:

def __init__(self, priority=100, **kwargs):
    super(STVideo, self).__init__(priority=priority, **kwargs)