【问题标题】:Diference between appengine_django BaseModel and db.Modelapp engine django Base Model 和 db.Model 的区别
【发布时间】:2009-11-12 05:49:32
【问题描述】:

我正在为 Django 使用 Google App Engine 助手。该帮助程序在其模板中包含以下几行:

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

# Create your models here.

我应该从 db.Model 还是从 BaseModel 派生模型? 我都试过了,我看不出有什么区别。即使使用 Django 表单,两者似乎都有效。是否有任何理由不删除 BaseModel 导入并从 db.Model 派生所有模型?

【问题讨论】:

    标签: python django google-app-engine django-models


    【解决方案1】:

    BaseModel 还会在 django 中注册继承的模型(因此,您可以通过调用 django.db.models.loading.get_model('app_lable.ModelName') 以及与此相关的所有其他内容来请求它)

    【讨论】:

      【解决方案2】:

      BaseModel 是一个由 Django 助手定义的类。它扩展了 db.Model 以使 Django 更好地使用它。您需要同时导入两者的原因是因为仍然直接从 db 使用属性类 - 但是如果您使用 db.Model 而不是 BaseModel,您可能会发现 Django 的某些功能无法按预期工作。

      【讨论】:

      • 但是,例如,文章 code.google.com/appengine/articles/djangoforms.html 使用带有 db.Model 的 Django 表单。所以看起来比较模糊,“某些功能”可能不起作用,甚至谷歌文章都忽略了BaseModel。为了安全起见,我会使用 BaseModel,但我想更好地了解可能会出现哪些问题。是否只是“Pydev UA”在其他答案中引用的模型注册?
      • Luis,如果您想对此问题有更完整的答案,您可能需要取消将其标记为已接受的答案。我当然想更多地了解这个主题。如果使用 db.Model 而不是 BaseModel,我完全同意您的说法“我想更好地了解可能会出现哪些问题”。我也同意你说他们的文档“相当模糊,'某些功能'可能不起作用”的部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-07
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多