2009-11-12 147 views
1

我正在使用Django的Google App Engine助手。此幫助程序在其模板中包含以下行:appengine_django BaseModel和db.Model之間的差異

from appengine_django.models import BaseModel 
from google.appengine.ext import db 

# Create your models here. 

我應該從db.Model還是從BaseModel派生我的模型? 我已經嘗試了兩個,我沒有看到任何區別。兩者都似乎工作,即使使用Django表單。是否有任何理由不刪除BaseModel導入並從db.Model派生所有模型?

回答

0

BaseModel是由Django幫手定義的一個類。它擴展了db.Model以使Django更好地工作。您需要同時導入的原因是因爲屬性類仍然直接從數據庫中使用 - 但是如果使用db.Model而不是BaseModel,那麼您可能會發現某些Django功能無法按預期工作。

+0

但是,例如,文章http://code.google.com/appengine/articles/djangoforms.html將db.Model與Django表單一起使用。所以它看起來比較模糊,「某些功能」可能不起作用,甚至谷歌的文章都忽略了BaseModel。我會安全地使用BaseModel,但我想更好地理解可能會出現的問題。 「Pydev UA」在其他答案中只提到模型註冊嗎? – 2009-11-12 15:14:49

+0

路易斯,如果你想要一個更完整的答案來解答這個問題,你可能想取消這個作爲接受的答案。我當然想知道更多關於這個問題。如果使用db.Model代替BaseModel,我完全同意你的陳述「我想更好地理解可能出現的問題」。我也同意你說他們的文檔「相當虛榮」的部分,某些功能可能不起作用。 – allyourcode 2009-11-20 06:14:50

1

的BaseModel也做內部的Django繼承的模型的登記(所以FE可以通過調用django.db.models.loading.get_model(「app_lable.ModelName」)和與此相關的所有其他的東西提出要求)