让Django忘记错误的'makemigrations'

时间:2014-11-08 00:16:05

标签: python django postgresql django-1.7

我正在使用Django应用程序,我已经迁移了我的基本模型。没有数据保存到表示此模型的表中(我使用PostgreSQL)。我之后在原始模型类下添加了一个新变量,如:

time_entered = models.DateTimeField(auto_now_add=True)  

我必须以无效格式输入默认时间,可能是default = datetime.datetime.now(),因为当我尝试迁移新变量时,Django给了我一个错误:

  

正在运行迁移:
  应用app.0002_model_time_entered ...追溯:
  ...
  django.core.exceptions.ValidationError:["'' value具有invali格式。它必须是YYYY-MM-DD HH:MM [:ss [.uuuuuu]] [TZ]格式。"]

我已评论time_entered,我已使用Django的时区将默认值设置为正确的格式,并且我已将默认值设置为a字符串格式正确。每次,当我尝试makemigrationsmigrate时,我都会得到同样的错误,而Django不会将我的更改提交给数据库。当我尝试用sqlmigrate查看SQL命令时,我甚至得到了错误。 (为了澄清,sqlmigrate适用于最近makemigrations但稍有更改的内容,但不适用于发生实际错误的早期未提交makemigration次尝试。)

我该怎么办?我怎样才能让Django不再顽固,放弃那个旧的错误的SQL命令?有没有办法从makemigration中删除任何未提交的SQL命令?我现在无法migrate任何事情。

2 个答案:

答案 0 :(得分:1)

已使用和未使用的迁移在./app/migrations中挂起。我在初始迁移后删除了所有迁移文件,然后运行了一个没有格式错误的新makemigrations

我不满足于此作为解决方案。我仍然希望听到更好的答案。

答案 1 :(得分:1)

https://south.readthedocs.org/en/latest/tutorial/part3.html

./ manage.py schemamigration [myapp] --auto --update

回滚上次迁移