我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
当前回答
这很简单,你需要在空的migrations文件夹中添加空的init.py。 然后使用"python manage.py makemigrations"检查迁移
目录结构,
你的应用 迁移 init.py
其他回答
这可能会帮助其他人,因为我最终花了几个小时试图追踪它。
如果您的模型中有同名的函数,这将删除该值。事后看来很明显,但尽管如此。
所以,如果你有这样的东西:
class Foobar(models.Model):
[...]
something = models.BooleanField(default=False)
[...]
def something(self):
return [some logic]
在这种情况下,该函数将覆盖上面的设置,使其“隐形”进行移民。
确保你的应用在settings.py中的installed_apps中被提及 确保建模类扩展了模型。模型
INSTALLED_APPS = [
'blog.apps.BlogConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
确保“blog.apps”。BlogConfig',(这包含在你的settings.py中,以便进行应用程序迁移)
然后运行python3 manage.py makemigrationblog或你的应用程序名
我忘记写正确的论点了
class LineInOffice(models.Model): # here
addressOfOffice = models.CharField("Корхоная жош",max_length= 200) #and here
...
在models.py 然后就不那么烦人了
在应用程序“myApp”中未检测到任何变化
在创建一个名为deals的新应用程序时,我遇到了一个不同的问题。我想在应用程序中分离模型,所以我有两个模型文件,分别命名为deals.py和dealers.py。 当运行python manage.py makemigrations时,我得到:未检测到变化。
我继续,在__init__.py中,它位于与我的模型文件(deals和dealer)相同的目录中
from .deals import *
from .dealers import *
然后makemigrations命令起作用了。
事实证明,如果你没有在任何地方导入模型,或者你的模型文件名不是models.py,那么模型就不会被检测到。
发生在我身上的另一个问题是我在settings.py中编写应用程序的方式:
我有:
apps.deals
它应该包括根项目文件夹:
cars.apps.deals