6
personas

Hola Stackoverflow,Django: objeto del modelo "no tiene ningún atributo '_meta'" en vista clasista

que estoy trabajando con vistas a base de clase y para un sitio de prueba, seguido del documentation para configurar los puntos de vista basados ​​en la clase . Para un sitio de proyecto (basado en el modelo de proyecto a continuación), solo quiero crear una aplicación CRUD rápida para el modelo de proyecto simple a continuación.

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 

Cuando ahora me carga \project\add, que debe llamar a la clase ProjectCreate, me sale el siguiente error: Tipo de objeto 'Proyecto' no tiene atributo '_meta'

No entiendo por qué. La clase de modelo normalmente no requiere metainformación. En otros proyectos basados ​​en clases, no encontré este problema.

¡Gracias por sus sugerencias!

Rastreo

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' 

Respuesta

9

Cambio:

class Project(models.Manager) 

a:

class Project(models.Model) 

porque models.Model es la clase real que debe extenderse para crear modelos personalizados, y los gerentes se utilizan realmente para anular el funcionamiento de la base de datos Están implicados los modelos en.

+0

¿Hay alguna otra cosa que falta? Dado que hago lo mismo que sugirió, no elimina el error de atributo. – tilaprimera

+0

¿Qué módulo de 'modelos.Modelo' debe importarse? Hay muchas opciones, pero parece que mi modelo personalizado no se ajusta a ninguna de ellas. – KasparTr

Cuestiones relacionadas