Я использую модель webapp2, ndb.
Я пытался использовать формы модели django с моделью ndb. Ниже соответствующие части из моей установки:ModelForms для приложения ndb appengine (djangoforms не работает для меня)
app.yaml:
libraries:
- name: webapp2
version: "2.5.1"
- name: jinja2
version: latest
- name: markupsafe
version: latest
- name: django
version: 1.3
models.py:
class SubTask(ndb.Model):
task = ndb.StructuredProperty(TaskList)
description = ndb.TextProperty()
start_time = ndb.DateTimeProperty()
end_time = ndb.DateTimeProperty()
forms.py:
from django.forms import ModelForm
from models import TaskList, TaskCategory, SubTask
class SubTaskForm(ModelForm):
class Meta:
model = SubTask
Handler:
class CreateSubTask(BaseHandler):
def get(self):
self.render_template('index.html', {'form':SubTaskForm})
app = webapp2.WSGIApplication([('/', IndexPage),
('/subtask', CreateSubTask), ],
debug=True)
ошибка, которую я получаю: AttributeError: объект типа 'подзадачи' не имеет атрибута '_meta'
Мой вопрос: Есть ли способ, я могу использовать формы модели django с ndb, или если я ошибаюсь, что это такое? Если модели django django, модель ndb отлично работает с WTForms?
Прикрепленный ниже является StackTrace:
ERROR 2012-06-23 03:25:58,770 wsgi.py:189]
Traceback (most recent call last):
File "/homeproject/expts/google_appengine/google/appengine/runtime/wsgi.py", line 187, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/homeproject/expts/google_appengine/google/appengine/runtime/wsgi.py", line 225, in _LoadHandler
handler = __import__(path[0])
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 676, in Decorate
return func(self, *args, **kwargs)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1858, in load_module
return self.FindAndLoadModule(submodule, fullname, search_path)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 676, in Decorate
return func(self, *args, **kwargs)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1722, in FindAndLoadModule
description)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 676, in Decorate
return func(self, *args, **kwargs)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1665, in LoadModuleRestricted
description)
File "/homeproject/expts/google_appengine/tdl/main.py", line 18, in <module>
from views import IndexPage, CreateSubTask
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 676, in Decorate
return func(self, *args, **kwargs)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1858, in load_module
return self.FindAndLoadModule(submodule, fullname, search_path)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 676, in Decorate
return func(self, *args, **kwargs)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1722, in FindAndLoadModule
description)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 676, in Decorate
return func(self, *args, **kwargs)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1665, in LoadModuleRestricted
description)
File "/homeproject/expts/google_appengine/tdl/views.py", line 4, in <module>
from forms import SubTaskForm
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 676, in Decorate
return func(self, *args, **kwargs)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1858, in load_module
return self.FindAndLoadModule(submodule, fullname, search_path)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 676, in Decorate
return func(self, *args, **kwargs)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1722, in FindAndLoadModule
description)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 676, in Decorate
return func(self, *args, **kwargs)
File "/homeproject/expts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1665, in LoadModuleRestricted
description)
File "/homeproject/expts/google_appengine/tdl/forms.py", line 4, in <module>
class SubTaskForm(ModelForm):
File "/homeproject/expts/google_appengine/lib/django_1_3/django/forms/models.py", line 205, in __new__
opts.exclude, opts.widgets, formfield_callback)
File "/homeproject/expts/google_appengine/lib/django_1_3/django/forms/models.py", line 145, in fields_for_model
opts = model._meta
AttributeError: type object 'SubTask' has no attribute '_meta'
согласно документации NDB вы можете использовать NDB с картой Django, добавляя промежуточное программное обеспечение к настройкам Django. Помните, что это должен быть первый класс промежуточного слоя в списке. –
Я делаю приложение webapp2, просто хочу импортировать djangoforms. мне нужно будет писать настройки и middlewares? есть ли более чистый процесс? не могли бы вы указать мне на эту документацию/учебник? – user993563
https://developers.google.com/appengine/docs/python/ndb/overview#intro –