1

創建自定義db.Property子類:所需的自定義屬性

class PropertyFoo(db.StringProperty): 
    def validate(self, value): 
    # Yes this is a pointless validator, but please read on 
    return value 

    def get_value_for_datastore(self, model_instance): 
    return super(PropertyFoo, self).get_value_for_datastore(model_instance) 

    def make_value_from_datastore(self, value): 
    return super(PropertyFoo, self).make_value_from_datastore(value) 

現在我也創建了db.Model子類:

class ModelFoo(db.Model): 
    foo = PropertyFoo(required=True) 

所以我考出來:

>>> m = ModelFoo() 
# No errors :(
>>> m.foo 
# No errors still 
>>> print m.foo 
'None' # <-- Why??? 

我應該期望出現如下錯誤:

BadValueError: Property foo is required 

如何確保我的自定義Property的子類爲required時引發BadValueError?我在我的PropertyFoo定義中錯過了什麼嗎?

+1

順便說一句,有一個在子類方法沒有意義,如果你只需要調用超 - 你可以忽略它們完全。 –

回答

3

我相信你需要調用父類的方法validate

class PropertyFoo(db.StringProperty): 
    def validate(self, value): 
    super(PropertyFoo, self).validate(value) #Base implementation checks 
    #Do your other check here raising BadValueError 
    return value 
+0

謝謝,我只是在你發佈之前得到它:)在這裏保留所以別人可能會受益:) – Kit