Django,我在 manage.py 检查或 sync.db 时收到“错误:模块:无法导入模型”

Posted

技术标签:

【中文标题】Django,我在 manage.py 检查或 sync.db 时收到“错误:模块:无法导入模型”【英文标题】:Django, I am getting "ERROR: Module: models could not be imported" while manage.py check or sync.db 【发布时间】:2016-03-01 21:30:23 【问题描述】:

将我的应用程序添加到 INSTALLED_APPS 部分后,我无法制作 python manage.py check - 它返回一个错误。 请你帮我找出我做错了什么?

1) console window with an error @line55 of models.py

控制台文本:

(py350-dja185-venv)MacBook-Pro:recipe_1_1 mac1$ python manage.py check shell Traceback(最近一次调用最后一次):文件“manage.py”,第 10 行, 在 execute_from_command_line(sys.argv) 文件“/Users/mac1/Envs/py350-dja185-venv/lib/python3.5/site-packages/django/core/management/init.py”,行351,在execute_from_command_line中 utility.execute() 文件“/Users/mac1/Envs/py350-dja185-venv/lib/python3.5/site-packages/django/core/management/init.py”,第 325 行, 在执行 django.setup() 文件“/Users/mac1/Envs/py350-dja185-venv/lib/python3.5/site-packages/django/init.py”, 第 18 行,在设置中 apps.populate(settings.INSTALLED_APPS) 文件“/Users/mac1/Envs/py350-dja185-venv/lib/python3.5/site-packages/django/apps/registry.py”, 第 108 行,在填充 app_config.import_models(all_models) 文件“/Users/mac1/Envs/py350-dja185-venv/lib/python3.5/site-packages/django/apps/config.py”, 第 198 行,在 import_models 中 self.models_module = import_module(models_module_name) 文件 "/Users/mac1/Envs/py350-dja185-venv/lib/python3.5/importlib/init.py", 第 126 行,在 import_module 中 return _bootstrap._gcd_import(name[level:], package, level) File "", line 986, in _gcd_import File "",第 969 行,在 _find_and_load 文件中 "",第 958 行,在 _find_and_load_unlocked 文件“”,第 673 行,在 _load_unlocked 文件“”,第 662 行,在 exec_module 文件“”,第 222 行,在 _call_with_frames_removed 文件“/Users/mac1/Documents/workspace/recipe_1_1/meals/models.py”,第 55 行, 在 类成分(models.Model):文件“/Users/mac1/Envs/py350-dja185-venv/lib/python3.5/site-packages/django/db/models/base.py”, 第 308 行, new_class._prepare() 文件“/Users/mac1/Envs/py350-dja185-venv/lib/python3.5/site-packages/django/db/models/base.py”, 第 361 行,在 _prepare cls.doc = "%s(%s)" % (cls.name, ", ".join(f.name for f in opts.fields)) TypeError :序列项 7:预期的 str 实例,int 找到了

2) 一段代码@models.py 为什么它在第 55 行给我一个错误?

36-39 MEASUREMENT_CHOICES = (('шт', 'штук'), ...,)

41 class Recipe(models.Model):
42     recipe_id = models.PositiveIntegerField()
43     meal_id = models.ForeignKey('Meal')
44     ingredient_id = models.ForeignKey('Ingredients', related_name = '+')
45     ingr_quantity = models.PositiveSmallIntegerField()
46     ingr_measurement = models.CharField(max_length = 5, choices = MEASUREMENT_CHOICES)
47     tail = models.CharField(max_length = 35) 

49 SEASON_CHOICES = ((u'01', u'январь'), (u'02', u'февраль'), (u'03', u'март'),
                  (u'04', u'апрель'), (u'05', u'май'), (u'06', u'июнь'),
                  (u'07', u'июль'), (u'08', u'август'), (u'09', u'сентябрь'),
                  (u'10', u'октябрь'), (u'11', u'ноябрь'), (u'12', u'декабрь'),  
                  )

55 class Ingredients(models.Model):
56    ingr_name = models.CharField(max_length = 20)
57    ingr_category = models.ForeignKey('IngrCategory') 
58    calories_raw = models.PositiveSmallIntegerField()
59    calories_boiled = models.PositiveSmallIntegerField()
60    calories_fried = models.PositiveSmallIntegerField()
61    ingr_unit = models.CharField(10)
62    price_in_season = models.DecimalField(7,2)
63    price_in_no_season = models.DecimalField(7,2)
64    price_current = models.DecimalField(7,2)
65    season = models.CharField(max_length = 2, choices = SEASON_CHOICES)

不知何故,它通过了食谱类,也通过了上一课,并在class Ingredients(models.Model) 行给了我一个错误。为什么?

3) eclipse窗口——同一个项目,不同的错误类型:

查找文件...完成。 导入测试模块...完成。 Traceback(最近一次通话最后一次):<...> 文件“/Applications/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.3.0.201508182223/pysrc/pydev_runfiles.py”,第 813 行,在 run_tests raise AssertionError("无法使用 DjangoTestSuiteRunner 运行套件,因为它无法导入。") AssertionError: 无法使用 DjangoTestSuiteRunner 运行套件,因为它无法导入。

非常感谢您的帮助。

【问题讨论】:

这里显示的是完整的Ingredients 类代码吗? 下次请将控制台上下文作为文本粘贴到问题中,而不是粘贴在空白处的图片。 MEASUREMENT_CHOICES的值是多少? Michal F,不,这里显示的成分类不完整。 trinchet,MEASUREMENT_CHOICES 是用俄语写的,类型是字符串,最多 5 个字符。 【参考方案1】:

问题在于没有“max_digits =”和“decimal_places =”

62    price_in_season = models.DecimalField(max_digits = 7, decimal_places = 2)

此字段是成分类中的序列号 7。

【讨论】:

以上是关于Django,我在 manage.py 检查或 sync.db 时收到“错误:模块:无法导入模型”的主要内容,如果未能解决你的问题,请参考以下文章

我在django中使用命令manage.py makemigrations [关闭]出错]]

django-admin startapp v/s python manage.py startapp [重复]

django-admin和manage.py

django-admin和manage.py

Django Heroku:python:无法打开文件'manage.py':[Errno 2]没有这样的文件或目录

django 和 python ./manage.py makemigrations 执行错误