【发布时间】:2018-12-11 08:45:38
【问题描述】:
我在现有模型中添加了一个新字段,当我运行 python manage.py makemigrations 时,我得到了以下信息
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py
Select an option: 1
Please enter the default value now, as valid Python
The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now()
我不小心跑了>>timezone.date()
然后当我运行python manage.py migrate 时出现以下错误
TypeError: Required argument 'year' (pos 1) not found
我的关注是我的表演迁移
[X] 0001_initial
[X] 0002_auto_20180307_1222
[X] 0003_auto_20180308_1608
[X] 0004_auto_20180421_0937
[ ] 0005_auto_20180702_1917
[ ] 0006_auto_20180702_1949
[ ] 0007_auto_20180702_2000
我该如何解决这个问题。
【问题讨论】:
-
只需删除您正在撤消的迁移 (0005~0007) 并再次进行迁移
-
能否请您发布您的模型代码的相关部分,相关的迁移文件?
-
您的模型可能需要日期时间的年份部分。 timezone.now() 发回一个 datetime 对象。对于平滑的模型迁移,从迁移文件夹中删除迁移 5、6、7,在模型上添加带有值的默认参数...(使用随机的 randint() 函数,)然后使用 makemigrations,迁移。
-
您似乎向名为 year 的模型添加了一个整数字段。但是在 makemigration 中,您将此方法的默认值设置为 datetimeobject 并在运行迁移时引发异常
-
谢谢大家,我通过删除文件 5,6,7 解决了这个问题,并进行了迁移,它成功了
标签: python django django-migrations