6
ludzi

Witam StackOverflow,Django: model obiektowy „nie ma atrybutu«_meta»” w związku opartego klasy

pracuję z widokiem na klasy na podstawie i na stronie testowej, I po documentation do konfiguracji widoki oparte klasie . Dla strony projektu (w oparciu o model projektu poniżej), chcę tylko utworzyć szybką aplikację CRUD dla prostego modelu projektu poniżej.

models.py

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

views.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 

Kiedy teraz załadować \project\add, który powinien zadzwonić klasę ProjectCreate, pojawia się następujący błąd: typu obiekt "Projekt" nie ma atrybutu "_meta"

Nie rozumiem, dlaczego. Zazwyczaj klasa modelu nie wymaga meta-informacji. W innych projektach opartych na klasach nie napotkałem tego problemu.

Dziękujemy za sugestie!

Traceback

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' 

Odpowiedz

9

Zmiana:

class Project(models.Manager) 

do:

class Project(models.Model) 

ponieważ models.Model jest rzeczywista klasa należy przedłużyć do tworzenia niestandardowych modeli i menedżerów są rzeczywiście używane zastąpić operację bazy danych Modele ation są zaangażowane w.

+0

Czy brakuje czegoś innego? Ponieważ robię to samo, co zasugerowałeś, nie usuwa to błędu atrybutu. – tilaprimera

+0

Jaki moduł "models.Model" powinien zostać zaimportowany? Jest wiele opcji, ale wydaje się, że mój model niestandardowy nie pasuje do żadnego z nich. – KasparTr

Powiązane problemy