一步一步,这是我如何到达现在的位置。。。在
在更改数据库中的Order
表以包含flowertype = IntegerField()
之后,我尝试运行命令python manage.py migrate
,但被告知我不能继续迁移,除非我将默认值设置为IntegerField()
,或b)让django为我设置它。我选择了a并将默认值设置为'something'
,只是为了消除我的错误。在
意识到我不应该将字符串放入IntegerField()
,我尝试了以下方法来解决这个问题。在
1)试图将models.IntegerField()
重置为models.IntegerField(default='1')
2)试图使用django-reset重置我的sql数据库,但它给了我大量错误,如“ImportError:cannotimport name sql_delete”
3)注释掉我的Order
模型,然后运行makemigrations
&;migrate
但没有用。在
迁移在python中失败,因此它从未到达数据库。您应该保持原样,然后进入^{cd1>}文件夹,删除添加^{{cd2>}字段的迁移(这将是最近的一个)。然后再次运行^{cd3>},但请确保在模型定义中设置了^{cd4>}(not
default='1'
)。编辑以获得进一步解释:
运行命令^{cd6>}时,django将检查python中的所有模型定义,并将它们与数据库中的定义进行比较。如果两者不匹配,django将创建一个迁移文件,该文件将更新数据库,以反映python代码中定义的模型定义。这就是^{{cd7>}命令所做的,它运行所有新的迁移文件。
因此,第一次运行^{cd6>}时,创建了一个迁移文件,将列添加到^{{cd9>}表中,并尝试将每行的值设置为^{{cd10>}。
这立即失败,因为它试图将^{cd11>}放入和^{cd12>}字段。
由于它失败了,除非删除文件,否则每次运行^{cd7>}时,django都会继续尝试运行该脚本。有两个选项1)您可以直接进入并编辑迁移文件,或者2)您可以删除该迁移文件,并在修复模型定义后重新创建它。
相关问题 更多 >
编程相关推荐