2009-01-19 23 views
18

¿Puede alguien ayudarme por favor para resolver este ..AttributeError: Objeto de 'módulo' no tiene 'modelo' atributo

from django.db import models 

# Create your models here. 
class Poll(models.model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 

class Choice(models.Model): 
    poll = models.ForeignKey(Poll) 
    choice = models.CharField(max_length=200) 
    votes = models.IntegerField() 

de reproducción:

c:\projects\mysite>python manage.py sql polls 
Traceback (most recent call last): 
    File "manage.py", line 11, in <module> 
    execute_manager(settings) 
    File "C:\Python25\Lib\site-packages\django\core\management\__init__.py", line 340, in execute_manager 
    utility.execute() 
    File "C:\Python25\Lib\site-packages\django\core\management\__init__.py", line 295, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "C:\Python25\Lib\site-packages\django\core\management\base.py", line 195, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "C:\Python25\Lib\site-packages\django\core\management\base.py", line 221, in execute 
    self.validate() 
    File "C:\Python25\Lib\site-packages\django\core\management\base.py", line 249, in validate 
    num_errors = get_validation_errors(s, app) 
    File "C:\Python25\lib\site-packages\django\core\management\validation.py", line 28, in get_validation_errors 
    for (app_name, error) in get_app_errors().items(): 
    File "C:\Python25\lib\site-packages\django\db\models\loading.py", line 128, in get_app_errors 
    self._populate() 
    File "C:\Python25\lib\site-packages\django\db\models\loading.py", line 57, in _populate 
    self.load_app(app_name, True) 
    File "C:\Python25\lib\site-packages\django\db\models\loading.py", line 72, in load_app 
    mod = __import__(app_name, {}, {}, ['models']) 
    File "c:\projects\mysite\..\mysite\polls\models.py", line 4, in <module> 
    class Poll(models.model): 
AttributeError: 'module' object has no attribute 'model' 
+1

@jazzrai - ¿Es correcto? ¿Lo marcarías como respondido? – Glycerine

+0

@jazzrai: ¿Te importaría aceptar una respuesta? ¡Esto también ayudará a los lectores futuros! – MERose

Respuesta

2

Como dice el mensaje de error en la última línea : el módulo models en el archivo c:\projects\mysite..\mysite\polls\models.py no contiene clase model. Este error se produce en la definición de la clase Poll:

class Poll(models.model): 

Cualquiera de la clase model está mal escrito en la definición de la clase Poll o está mal escrito en el módulo models. Otra posibilidad es que falta por completo en el módulo models. Tal vez está en otro módulo o aún no está implementado en models.

+0

gracias por la sugerencia. – jbcedge

62

Se llama models.Model y no models.Model (mayúsculas y minúsculas). Fijar su modelo de encuesta como esto -

class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 

Espero que ayude ...

+0

¿por qué se votó tantas veces? – anthropomorphic

+7

@MichaelDorst: como esta pregunta se ha visto muchas veces, esta respuesta es correcta y la respuesta no fue aceptada. Es un defecto de SO, en mi opinión, que la comunidad no puede votar como correcta la respuesta. – Olhovsky

2

me di cuenta de que observando el Seguimiento de la pila que estaba tratando de cargar mi propio guión en lugar de otro módulo llamado de la misma manera , es decir, mi script se llamaba random.py y cuando un módulo que usaba intentaba importar el paquete "aleatorio", estaba cargando mi script provocando una referencia circular, así que le cambié el nombre y borré un archivo .pyc que había creado desde la carpeta de trabajo y las cosas funcionaron bien.

7

También me dio el mismo error, pero me di cuenta de que yo había escrito en Exteriores * k * ey y no extranjero * K * ey, (capital K) si hay un novato por ahí, echa un vistazo a la ortografía y gorras.

1

Buscando

AttributeError: 'module' object has no attribute 'BinaryField'

me llevó aquí.

Las respuestas anteriores no resolvieron el problema, entonces estoy publicando mi respuesta.

BinaryField se añadió desde Django 1.6. Si tiene una versión anterior, le dará el error anterior.

Es posible que desee comprobar la ortografía del atributo en primer lugar, como se sugiere en las respuestas anteriores, y después comprobar para asegurarse de que el módulo en la versión de Django de hecho tiene el atributo.

2

En class poll, heredó su clase de models.model pero no hay ningún módulo en los modelos llamados de ese nombre.

Dado que Python distingue entre mayúsculas y minúsculas, debe utilizar la capital Model en lugar de model.

class poll(models.Model): 
... 
Cuestiones relacionadas