我在Djang makemigrations /迁移工具方面遇到问题
models.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,但出现此错误消息:
您正在尝试添加一个不可为空的字段'user',而没有默认值;我们无法做到这一点(数据库需要一些东西来填充现有行)。请选择一个修复程序:1)现在提供一次性的默认设置(将在所有现有行上设置此列的值为空)2)退出,然后让我在models.py中添加默认值
选择一个选项:1请输入有效的Python默认值datetime和django.utils.timezone模块可用,因此您可以执行例如时区输入“ exit”退出此提示
无论哪种方式,我都无法将这一小更改迁移到数据库。您有什么意见吗?谢谢!
我在Djang makemigrations /迁移工具上遇到问题,我有一个带有到Employee表的外键的Withdraw模型。一切正常,来自django.contrib.auth.models import的models.py ...
不添加默认值或将字段设置为空,需要填充所有现有条目。您只需使该字段可以为Null。
user = models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE)
是的,这是自然行为。