【问题标题】:Django 2.1 unable to detect my new models during makemigrationsDjango 2.1 在 makemigrations 期间无法检测到我的新模型
【发布时间】:2018-12-28 05:51:19
【问题描述】:

我一直在寻找如何解决这个问题。这些是我在发布此问题之前尝试过的事情。不幸的是,它们都不起作用。

  • 在设置的 INSTALLED_APPS 列表中添加了应用名称 (myapp),它不起作用。

  • 尝试仅添加应用程序名称,但效果不佳。所以现在我使用完整的虚线路径 (myapp.settings.MyappConfig) 只是为了安全。

  • 已删除__pycache__/*.pyc

当我运行$ python manage.py showmigrations 时,我可以看到“myapp”被识别但没有迁移。

我已将所有模型放在一个文件夹中进行组织。请参阅下面的我的文件夹结构。我在这里想念什么?这太令人沮丧了,请帮助我。提前致谢!

mysite
|__myapp
|   |__ models
|   |   |__ __init__.py
|   |   |__ project.py 
|   |
|   |___ apps.py
|   |___ admin.py #<-- register your models here
|
|__mysite
   |__ settings.py

更新:已修复!


我能够通过在 admin.py 中注册模型来生成迁移脚本

https://docs.djangoproject.com/en/2.1/ref/contrib/admin/

有了这个,您现在可以将模型组织到文件夹中。无需在__init__.py 中定义模块。

希望有人觉得这很有用。感谢大家的回复。

【问题讨论】:

    标签: django django-models django-migrations


    【解决方案1】:

    确保应用内有一个migrations 文件夹,并且其中有一个__init__.py。模型文件夹也是如此,您应该确保那里有 __init__.py 文件。否则 python 不会将其识别为模块。 同样在 init 文件中(对于模型),您需要像这样导入模型类:

    from .project import ProjectModel
    

    或者你可以运行python manage.py makemigrations &lt;app_name&gt;创建迁移文件夹。

    【讨论】:

    • 哦,是的,我忘了包括这个。我也这样做了,但仍然没有运气。
    • inside __init__.py(对于模型)你能像:from .project import ProjectModel那样做吗? @Wreeecks
    • 然后运行 ​​makemigrations
    • 文件夹中的所有模型都需要这个吗?
    • 据我所知,是的。正如 django 在 models.py 上识别的那样,基本上你正在做的是将文件夹 models 作为一个模块,所以在 __init__.py 内部,它应该包含所有模型类引用
    猜你喜欢
    • 2017-10-22
    • 1970-01-01
    • 2022-01-15
    • 2021-07-07
    • 1970-01-01
    • 2019-07-30
    • 2016-07-09
    相关资源
    最近更新 更多