AttributeError: у объекта 'module' нет атрибута 'model' - PullRequest
22 голосов
/ 19 января 2009

Может кто-нибудь помочь мне, пожалуйста, чтобы решить эту проблему ..

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()

Продолжительность:

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'

Ответы [ 6 ]

66 голосов
/ 19 января 2009

Это называется models.Model, а не models.model (чувствительно к регистру). Зафиксируйте свою модель опроса следующим образом -

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

Надеюсь, это поможет ...

8 голосов
/ 25 ноября 2013

Я также получил ту же ошибку, но заметил, что набрал «Иностранный» * k * эй, а не «Иностранный» * К * эй (заглавная K), если есть новичок там, проверьте правописание и заглавные буквы.

2 голосов
/ 25 февраля 2018

В class poll вы унаследовали свой класс от models.model, но в моделях с таким именем нет модуля.

Поскольку Python чувствителен к регистру, вам нужно использовать заглавную Model вместо model.

class poll(models.Model):
...
2 голосов
/ 22 декабря 2016

Поиск

AttributeError: у объекта 'module' нет атрибута 'BinaryField'

приземлился здесь.

Приведенные выше ответы не решили проблему, поэтому я публикую свой ответ.

BinaryField был добавлен начиная с Django 1.6. Если у вас более старая версия, она выдаст вышеуказанную ошибку.

Вы можете сначала проверить правильность написания атрибута, как предлагается в ответах выше, а затем проверить, действительно ли модуль в версии Django имеет атрибут.

2 голосов
/ 02 июня 2012

Я понял, что, просматривая трассировку стека, он пытался загрузить свой собственный скрипт вместо другого модуля, называемого таким же образом, то есть мой скрипт назывался random.py, и когда используемый мной модуль пытался импортировать «случайный» пакет, он загружал мой скрипт, вызывая циклическую ссылку, поэтому я переименовал его и удалил .pyc-файл, который он создал, из рабочей папки, и все работало просто отлично.

2 голосов
/ 19 января 2009

Как указано в сообщении об ошибке в последней строке: модуль models в файле c:\projects\mysite..\mysite\polls\models.py не содержит класса model. Эта ошибка возникает в определении класса Poll:

class Poll(models.model):

Либо класс model написан с ошибкой в ​​определении класса Poll, либо он содержит ошибку в модуле models. Другая возможность состоит в том, что он полностью отсутствует в модуле models. Возможно, он находится в другом модуле или еще не реализован в models.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...