应用程序引擎上的Django 1.4在升级到HRD后使用ndb而不是db

时间:2013-09-13 18:30:13

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

从本地服务器跟踪:

Traceback (most recent call last):
  File "/Users/pk/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 266, in Handle
    result = handler(dict(self._environ), self._StartResponse)
  File "/Users/pk/Desktop/Lkos_hrd/los/src/common/zip-packages/django.zip/django/core/handlers/wsgi.py", line 219, in __call__
    self.load_middleware()
  File "/Users/pk/Desktop/Lkos_hrd/los/src/common/zip-packages/django.zip/django/core/handlers/base.py", line 45, in load_middleware
    mod = import_module(mw_module)
  File "/Users/pk/Desktop/Lkos_hrd/los/src/common/zip-packages/django.zip/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Users/pk/Desktop/Lkos_hrd/los/src/website/middleware.py", line 1, in <module>
    from website.models import Preference, Person
  File "/Users/pk/Desktop/Lkos_hrd/los/src/website/models.py", line 7, in <module>
    from logic.persongroup import *
  File "/Users/pk/Desktop/Lkos_hrd/los/src/logic/persongroup.py", line 10, in <module>
    class PersonGroup(db.Model):
  File "/Users/pk/Desktop/Lkos_hrd/los/src/common/appenginepatch/appenginepatcher/patch.py", line 549, in __init__
    signals.class_prepared.send(sender=cls)
  File "/Users/pk/Desktop/Lkos_hrd/los/src/common/zip-packages/django.zip/django/dispatch/dispatcher.py", line 172, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/Users/pk/Desktop/Lkos_hrd/los/src/common/zip-packages/django.zip/django/db/models/manager.py", line 36, in ensure_default_manager
    for base_class in default_mgr.mro()[1:]:
TypeError: Error when calling the metaclass bases
    descriptor 'mro' of 'type' object needs an argument

升级到Google应用引擎High Res和python 2.7并遇到了这个问题。作为测试,我从'google.appengine.ext import db'更改为'from google.appengine.ext import ndb'并且还更新了例如class person(db.model)到class person(ndb.model)

然后该死的东西开始超越这个错误但是我必须改变每个模型和属性以移动到ndb以使整个工作正常。就好像它根本不能识别旧的db API,所以我猜我错过了什么。

1 个答案:

答案 0 :(得分:0)

您几乎可以尝试让Google App Engine Launcher + Django 1.4正常运行。发展已转移到人力资源开发的Django-nonrel。

https://django-nonrel.readthedocs.org/en/latest/