我使用 Django 和 Postgre 作为数据库。所以我完成了所有迁移,但后来我不小心删除了编辑器中的迁移文件夹。因此,我在终端中再次执行了“python manage.py makemigrations”,希望能够找回该文件夹,但它回复“未检测到任何更改”。我该怎么做才能取回文件夹?简单地再次迁移是错误的吗?我尝试创建一个新数据库并重新执行相同的过程,但它仍然显示“未检测到更改”。
我非常感谢你的帮助。:)
我有以下型号。
BaseClass1和BaseClass2是模型使用的抽象模型。
在这种情况下,模型AdBreak由视图集和序列化器使用。当我运行时python manage.py makemigrations,AdBreak检测到模型的变化。模型AdBreakStatus没有被创建。
由于,AdBreakStatus链接到AdBreak,我AdBreakStatus也期待迁移。我的理解有误吗?
编辑
在初始状态,只有 AdBreak 和 BaseClass1 模型。添加了新状态、AdBreakStatus 和 BaseClass2 模型。AdBreak 中的一些字段已移至 AdBreakStatus。
在此先感谢您的帮助。
class BaseClass1(models.Model):
class Meta:
abstract=True
timestamp = models.DateTimeField(auto_now_add=True)
class BaseClass2(models.Model):
class Meta:
abstract=True
other_field = models.IntegerField()
class AdBreak(BaseClass1):
class Meta:
db_table = "ad_break"
ad_break_id = models.AutoField(primary_key=True)
... # Other fields
class AdBreakStatus(BaseClass2):
class Meta:
db_table = "ad_break_status"
ad_break = models.ForeignKey(AdBreak)
... # Other Fields
Run Code Online (Sandbox Code Playgroud) 我刚刚将我的项目升级到 Django 1.8.4。我以前从未在这个项目中使用过迁移。我发现我必须对我的四个应用程序显式运行“makemigrations”命令,因为它们包含 auth_user 表的外键。我是否需要对其他六个应用程序运行 makemigrations 命令?我问的原因是因为文件说,
如果您的应用程序已经有模型和数据库表,并且还没有迁移(例如,您针对以前的 Django 版本创建它),则需要将其转换为使用迁移”
但是,当我对我的“家庭”应用程序运行命令时,我收到了这条消息:
No changes detected in app 'home'
Run Code Online (Sandbox Code Playgroud)
将项目转换为 Django 1.8 时,是否应该对所有应用程序运行 makemigrations 命令,然后在实际数据库表已存在的情况下运行“migrate --fake-initial”?
谢谢。