makemigrations没有检测到新模型

Sco*_*nce 1 python django django-models

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
Run Code Online (Sandbox Code Playgroud)

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

任何想法为什么这些变化都没有被提升?

zai*_*zil 5

尝试,运行指定 app_name 的 makemigrations,

python manage.py makemigrations <your_app_name>
Run Code Online (Sandbox Code Playgroud)

或者

./manage.py makemigrations <your_app_name>
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题。

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


dor*_*oru 5

必须将模型导入包的__init__.py文件中models.来自文档:

manage.py的startApp命令创建一个应用程序结构,其包括一个models.py文件.如果您有许多模型,则在单独的文件中组织它们可能很有用.

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

MYAPP /模型/ __ init__.py

from .organic import Person
from .synthetic import Robot
Run Code Online (Sandbox Code Playgroud)