【问题标题】:makemigrations not detecting new modelsmakemigrations 没有检测到新模型
【发布时间】:2017-10-22 09:39:27
【问题描述】:

Django 1.11。我最近在 myapp.models 中添加了以下模块:

from django.db import models
from ordered_model.models import OrderedModel

from .songs import Song

class Service(models.Model):
    name = models.CharField(max_len=200, unique=True)
    date = models.DateField(blank=True)
    items = models.ManyToManyField(ServiceItem)

    class Meta:
        ordering = ('-date', 'name')

class ServiceItem(OrderedModel):
    item = models.ForeignKey(Song)
    song_custom_order = models.CharField(max_len=50, blank=True)
    order_with_respect_to = 'service'

    class Meta(OrderedModel.Meta):
        pass

我在另一个模块中有其他模型(在同一目录中)。当我运行./manage.py makemigrations 时,脚本会在我的另一个模块中找到我的更改,但在这个模块中没有。 FWIW,这个模块是全新的代码,没有以前的迁移历史。

任何想法为什么这些更改没有被采纳?

【问题讨论】:

  • 检查是否有init.py文件并检查文件名是否为models
  • 模型必须在__init__.py file of models`包中导入。请参阅this answer 了解更多信息。
  • 谢谢,@doru。如果你把它变成一个答案,我会接受它。它成功了。我从没想过必须在__init__.py 中导入我的模型。

标签: python django django-models


【解决方案1】:

我在添加新模型作为新应用的一部分时遇到了这个问题。

解决方案是确保新应用名称包含在INSTALLED_APPS 中。

【讨论】:

    【解决方案2】:

    模型必须在models 包的__init__.py 文件中导入。来自docs

    ma​​nage.py startapp 命令创建一个应用程序结构, 包括一个 models.py 文件。如果你有很多模型,把它们组织成 单独的文件可能有用。

    为此,请创建一个模型包。删除 models.py 并创建一个 myapp/models/ 目录,其中包含一个 __init__.py 文件和文件 存储您的模型。您必须在 __init__.py 文件中导入模型。 例如,如果您在 models 中有 organic.pysynthetic.py 目录:

    myapp/models/__init__.py

    from .organic import Person
    from .synthetic import Robot
    

    【讨论】:

    • 文档说如果你有很多模型你可以这样做,但这不是强制性的......
    【解决方案3】:

    将模型目录创建为一个包(init.py 应该在那里)并将模型文件存储在那里可能会起到作用。

    【讨论】:

      【解决方案4】:

      尝试,运行 makemigrations 指定 app_name,

      python manage.py makemigrations <your_app_name>
      

      ./manage.py makemigrations <your_app_name>
      

      这应该可以解决问题。

      另外,请确保 your_app_name 包含在 settings.py 文件的 INSTALLED_APPS 设置中。

      【讨论】:

      • 谢谢,但这个答案解决了一个不同的问题,其中没有一个迁移工作。我的问题在上面的 cmets 中得到了解决。
      猜你喜欢
      • 2016-01-01
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多