我对 Djang makemigrations / migrate 工具有疑问
- 我有一个 Employee 表的外键提取模型。一切正常
模型.py
from django.contrib.auth.models import User
class Withdraw(models.Model):
employee_id = models.ForeignKey(Employee, on_delete = models.PROTECT)
amount = models.IntegerField(default=0)
withdraw_date = models.DateTimeField(default=timezone.now)
is_confirmed_by_employer = models.BooleanField(default=False)
我想更改它并将用户作为用户的外键:
user = models.ForeignKey(User, on_delete=models.CASCADE)
我运行 makemigrations 并收到以下错误消息:
您正在尝试添加一个不可为空的字段“用户”以在没有默认值的情况下退出;我们不能这样做(数据库需要一些东西来填充现有的行)。请选择一个修复:1)现在提供一次性默认值(将在所有现有行上设置此列的空值)2)退出,让我在 models.py 中添加一个默认值
- 如果我按 1,那么我有以下消息,我没有真正得到什么,为什么我要把 datetime 或 timezone.now 给用户?
选择一个选项: 1 Please enter the default value now, as valid Python the datetime and django.utils.timezone modules are available, so you can do eg timezone.now 键入'exit'退出此提示
- 我尝试删除 migrates 文件夹并按照其他一些论坛帖子中的建议重新创建迁移文件。当我使用 createmigrations Withdraw 命令重新创建迁移并将其迁移到 postgresSql 时,不会创建 Withdraw 表,但是该工具正在写入该表已创建和迁移。
所以无论哪种方式,我都无法将这个小改动迁移到数据库。你有什么意见吗?谢谢!