1

私は自分のサイトに継承されたモデリング スキーマを使用しています。すべてのメディア要素が 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 に答える