2
這是正確的嗎?在Web2Py中,您是而不是能夠在「模型」中創建自定義方法,以便它們可以包含要讓模型實現的業務邏輯?是否可以將自定義方法添加到Web2Py的內置「模型」中?
在Django中的情況下,你可以這樣做:
class Aircraft(models.Model):
'''I am an aircraft. I can fly, if I am created in Django.
'''
name = models.CharField(max_length=20)
def fly(self):
# ... some advanced logic here ...
return 'I am flying'
但是否有可能做這樣的事情(創建自定義的方法)在web2py中,而不需要從一開始就寫全ORM系統或者在所有表的實例之間共享單一方法?有沒有確定的方法來做到這一點?例如:
db.define_table("aircrafts",
Field("name", type="string", length=20)
)
aircraft = db(db.aircrafts).select().first()
# I am an aircraft too, please make me fly
aircraft.fly()
好,這可能是一些可以幫助我實現我想要的一部分 - 它可以顯着提高web2py的模型對我的可用性。但**是否有可能添加實際上比行更多的參數的自定義方法?**是否有任何與這些方法有關的問題?您引用的文檔說:「_注意採用單個參數(self)的類的每種方法都是新的虛擬字段。」。這是否意味着如果我試圖實施像'aircraft.fly(speeds.FAST,dirs.NORTH)'(更多參數)一樣使用的方法,那麼我會在某個時候碰壁? – Tadeck 2012-03-07 19:55:14
請注意,新樣式的懶惰虛擬字段在被調用時可以採用其他參數。請參閱Field.Lazy示例[此處](http://web2py.com/books/default/chapter/29/6#New-style-virtual-fields-%28experimental%29)。你也許可以用老式的懶惰虛擬字段指定附加參數,但我沒有嘗試過。 – Anthony 2012-03-07 21:27:30
感謝您的意見。我現在接受你的答案作爲回答我的問題的答案。我還有其他問題可以回答:[我可以在Web2Py中包含局部視圖,將特定變量傳遞給它?](http://stackoverflow.com/questions/9674630/can-i-include-partial-view-in- web2py中,通過特定的變量 - 到 - 它)。在官方文件中我沒有找到任何幫助。 – Tadeck 2012-03-12 20:56:09