属性错误:'module'对象没有'model'属性。

25

请问有谁能帮我解决这个问题吗?

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
@jazzrai - 这个正确吗?你能标记为已回答吗? - Glycerine
@jazzrai:您介意接受一个答案吗?这也将有助于未来的读者! - MERose
8个回答

77

它被称为models.Model而不是models.model(区分大小写)。请像这样修复您的Poll模型 -

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

7
由于这个问题被多次浏览,而且答案是正确的但未被采纳,我认为这是SO的一个缺陷,因为社区无法投票选择正确答案。 - Olhovsky

8

我也遇到了同样的错误,但我注意到我输入的是Foreign*k*ey而不是Foreign*K*ey(大写K),如果有新手,请检查拼写和大小写。


3

搜索

属性错误:'module' object没有'BinaryField'属性

这让我来到这里。

以上答案无法解决问题,因此我发布我的答案。

BinaryField自Django 1.6版本开始添加。如果您使用的是旧版本,则会出现上述错误。

您可能需要首先检查属性的拼写,如上面的答案所建议的那样,然后检查Django版本中的模块是否确实具有该属性。


2
class poll 中,你从 models.model 继承了你的类,但是在 models 模块中没有这个名称。
由于 Python 是大小写敏感的,所以你需要使用大写的 Model 而不是 model
class poll(models.Model):
...

2
我注意到通过查看堆栈跟踪,它试图在另一个同名模块的位置加载我的脚本,即我的脚本被称为random.py,当我使用的模块尝试导入“random”包时,它会加载我的脚本,从而导致循环引用,所以我将其重命名并删除了工作文件夹中创建的一个.pyc文件,然后一切正常了。

2

正如最后一行的错误信息所述:文件 c:\projects\mysite..\mysite\polls\models.py 中的模块 models 不包含类 model。该错误发生在 Poll 类的定义中:

class Poll(models.model):

Poll类的定义中,model类名可能拼写错误,或者在models模块中也有可能拼写错误。另一种可能是它完全不存在于models模块中。也许它在另一个模块中,或者还没有在models中实现。


0
将这个代码:
``` class Poll(models.model): ```
修改为:
``` class Poll(models.Model): ```
问题出在 `models.model`,应该改为 `models.Model`。

欢迎来到 Stack Overflow!请不要重复别人已经说过的话。 - pigrammer

0

我曾经遇到过类似的问题。在我的admin.py文件中,我使用了from django.db import models。但是当我将其修改为from MyAppName import models后,问题得到了解决。(尽管我不明白为什么我应该从我的应用程序中导入模型而不是django.db)另外,请确保验证您如何定义主键。如果您没有专门定义主键,请确保在setting.py文件中添加DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'。


你的回答目前写得不是很清楚。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。您可以在帮助中心中找到有关编写良好答案的更多信息。 - moken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接