13

Stackoverflow の皆さん、こんにちは。

私はクラス ベースのビューを使用しています。テスト サイトでは、ドキュメントに従ってクラス ベースのビューをセットアップしました。プロジェクト サイト (以下のプロジェクト モデルに基づく) の場合、以下の単純なプロジェクト モデル用の簡単な CRUD アプリケーションを作成したいだけです。

models.py

class Project(models.Manager):
    name =  models.CharField(_('Name of the Project'), max_length = 100,)
    slug = models.SlugField(max_length=100,)
    ...

ビュー.py

from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy
from project.models import Project

class ProjectCreate(CreateView):
    model = Project

class ProjectUpdate(UpdateView):
    model = Project

\project\addクラスを呼び出す必要がある をロードするProjectCreateと、次のエラーが表示されます: type object 'Project' has no attribute '_meta'

私はなぜなのか理解していない。通常、モデル クラスはメタ情報を必要としません。他のクラス ベースのプロジェクトでは、この問題は発生しませんでした。

ご提案ありがとうございます。

トレースバック

Django Version: 1.4.1
Python Version: 2.7.1

Traceback:
File "/Users/neurix/Development/vir_project_2.0/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/Users/neurix/Development/vir_project_2.0/lib/python2.7/site-packages/django/views/generic/base.py" in view
  48.             return self.dispatch(request, *args, **kwargs)
File "/Users/neurix/Development/vir_project_2.0/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
  69.         return handler(request, *args, **kwargs)
File "/Users/neurix/Development/vir_project_2.0/lib/python2.7/site-packages/django/views/generic/edit.py" in get
  168.         return super(BaseCreateView, self).get(request, *args, **kwargs)
File "/Users/neurix/Development/vir_project_2.0/lib/python2.7/site-packages/django/views/generic/edit.py" in get
  130.         form_class = self.get_form_class()
File "/Users/neurix/Development/vir_project_2.0/lib/python2.7/site-packages/django/views/generic/edit.py" in get_form_class
  89.             return model_forms.modelform_factory(model)
File "/Users/neurix/Development/vir_project_2.0/lib/python2.7/site-packages/django/forms/models.py" in modelform_factory
  407.     return form_metaclass(class_name, (form,), form_class_attrs)
File "/Users/neurix/Development/vir_project_2.0/lib/python2.7/site-packages/django/forms/models.py" in __new__
  206.                                       opts.exclude, opts.widgets, formfield_callback)
File "/Users/neurix/Development/vir_project_2.0/lib/python2.7/site-packages/django/forms/models.py" in fields_for_model
  146.     opts = model._meta

Exception Type: AttributeError at /project/add/
Exception Value: type object 'Project' has no attribute '_meta'
4

1 に答える 1

13

変化する:

class Project(models.Manager)

に:

class Project(models.Model)

カスタムモデルを作成するためmodels.Modelに拡張する必要がある実際のクラスであり、マネージャーは実際にデータベース操作モデルが関与するオーバーライドに使用されるためです。

于 2012-09-09T09:56:28.243 に答える