AttributeError: объект 'module' не имеет атрибута 'model'
Может ли кто-нибудь помочь мне, пожалуйста, решить это.
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'
Ответы
Ответ 1
Он называется models.Model, а не models.model(с учетом регистра). Исправьте свою модель опроса следующим образом:
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
Надеюсь, что это поможет...
Ответ 2
У меня тоже была такая же ошибка, но я заметил, что набрал Foreign * k * ey, а не Foreign * K * ey, (capital K), если там есть новичок, проверьте орфографию и кепки.
Ответ 3
Как сказано в последней строке сообщения об ошибке: модуль models
в файле c:\projects\mysite..\mysite\polls\models.py
не содержит класса model
. Эта ошибка возникает в определении класса Poll
:
class Poll(models.model):
Либо класс model
ошибочно написан в определении класса Poll
, либо он ошибочно написан в модуле models
. Другая возможность заключается в том, что он полностью отсутствует в модуле models
. Возможно, это в другом модуле или еще не реализовано в models
.
Ответ 4
Я понял, что, посмотрев на трассировку стека, он пытался загрузить мой собственный script вместо другого модуля, который называется таким же образом, т.е. мой script был вызван random.py, и когда я использовал модуль, пытаясь импортировать "случайный" пакет, он загружал мой script, вызывая круговую ссылку, и поэтому я переименовал его и удалил .pyc файл, который он создал из рабочей папки, и все работает нормально.
Ответ 5
Поиск
AttributeError: объект 'module' не имеет атрибута 'BinaryField'
посадил меня сюда.
Вышеупомянутые ответы не решают проблему, поэтому я отправляю свой ответ.
BinaryField
добавлено после Django 1.6. Если у вас более старая версия, она даст вам вышеуказанную ошибку.
Сначала вы можете проверить правописание атрибута, как это предложено в приведенных выше ответах, а затем проверить, чтобы убедиться, что модуль в версии Django имеет этот атрибут.