Evh*_*vhz 4 python mysql django django-migrations
我已经阅读了一些关于这个问题的问题,这个问题也没有为我的案例给出正确答案:
我在已经存在的模型中添加了created_time字段,因此mysql表中没有属于该模型的日期.
class Configs(models.Model):
...
creation_date = models.DateTimeField(auto_now_add=True, blank=True)
...
Run Code Online (Sandbox Code Playgroud)
我使用了迁移 python manage.py makemigrations
我收到这个错误:
您试图在没有默认值的情况下向集合中添加不可为空的字段"creation_date"; 我们不能那样做(数据库需要一些东西来填充现有的行).请选择一个修复:
我尝试了很多选择:
creation_date = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
这个给出了同样的错误.
如果设置中的USE_TZ设置为False,如何实现此迁移?
顺便说一下,这是Django 1.9.4 makemigrations脚本中的一个错误吗?
dna*_*njo 12
auto_now_add设置创建实例时的当前日期时间,这在迁移期间从未发生过,因此您尝试保留NULL一个不可为空的字段.
解决方案是向模型添加默认日期makemigrations,然后makemigrations再次从模型中删除默认参数migrate.您可以实现对null=True字段的相同添加,向填充字段的迁移添加RunPython或RunSQL,然后null=true从字段中删除.
最后,您可以合并两个迁移文件(或简单自己编写)以结束以下内容:
operations = [
migrations.AddField(
model_name='configs',
name='creation_date',
field=models.DateTimeField(auto_now_add=True, null=True, blank=True),
),
migrations.RunPython(populate_dates),
migrations.AlterField(
model_name='configs',
name='creation_date',
field=models.DateTimeField(auto_now_add=True, blank=True),
),
]
Run Code Online (Sandbox Code Playgroud)
我只是写了它,所以我希望它没有很多错别字
| 归档时间: |
|
| 查看次数: |
7811 次 |
| 最近记录: |