2009-11-12 56 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”)和与此相关的所有其他的东西提出要求)