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,此模块是所有新代码,没有以前的迁移历史记录。
为什么这些变化没有得到解决的任何想法?
答案 0 :(得分:5)
必须将模型导入__init__.py
包的models
文件中。来自docs:
manage.py startapp命令创建一个应用程序结构 包含 models.py 文件。如果您有许多模型,请将它们组织起来 单独的文件可能很有用。
为此,请创建模型包。删除 models.py 并创建一个 带有 __ init __。py 文件的 myapp / models / 目录以及 存储你的模型。您必须在 __ init __。py 文件中导入模型。 例如,如果模型中有 organic.py 和 synthetic.py 目录:
<强>的myapp /模型/ __初始化__。PY 强>
from .organic import Person
from .synthetic import Robot
答案 1 :(得分:3)
尝试运行指定app_name的makemigrations,
python manage.py makemigrations <your_app_name>
或
./manage.py makemigrations <your_app_name>
这应该可以解决问题。
另外,请确保your_app_name包含在settings.py文件的INSTALLED_APPS设置中。
答案 2 :(得分:0)
将模型目录创建为一个包( init .py应该存在)并在那里存储模型文件可能会有所帮助。
答案 3 :(得分:0)
在添加新模型作为新应用的一部分时,我遇到了这个问题。
解决方案是确保新的应用名称包含在import re
query = '|'.join([re.escape(i) for i in ['(gold)', '(silver)']])
df = df[~df['var'].str.contains(query)]
。