1

我正在为我的网站使用继承的建模模式,它在一个通用 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)

有没有办法设置这个不同的默认值,它们可能会在之后改变,但一开始必须由这些值改变。任何想法?

4

1 回答 1

0

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

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

def __init__(self, priority=100, **kwargs):
    super(STVideo, self).__init__(priority=priority, **kwargs)
于 2012-11-22T19:52:02.273 回答