添加新字段作为外键后,我遇到了问题:
一开始,我的模型是这样的:
class Book(models.Model):
title = models.CharField(max_length=150)
后来,我为作者及其模型添加了一个外键字段,如下所示:
class Author(models.Model):
name = models.CharField(max_length=50)
class Book(models.Model):
title = models.CharField(max_length=150)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
添加新的外键后,我运行pythion3 manage.py makemigrations
命令,它会指导我插入1
或2
,然后插入1
,然后添加{{1 }}
它是指南:
后来,我尝试运行timezone.now()
命令,但它引发以下错误:
python3 manage.py migrate
我知道我可以在作者字段中使用TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.datetime'
,null=True
e来解决此问题,但是我不需要将此字段保留为空
我没有解决此错误的方法,有人可以帮助我解决此错误吗?甚至在执行几次makemigrations之后,我仍无法获得如何添加新的foregin关键字段的信息,
在这种情况下有人可以建议我吗?
答案 0 :(得分:1)
author
字段是非nullable
字段。这意味着对于数据库中现有的Book
对象,您需要为foreignkey
字段指定一个指向现有author
对象的Author
值。
由于ForeignKey
字段需要一个integer
,但您传递了一个datetime
对象,因此出现了错误
使用字段nullable
将解决此问题:
author = models.ForeignKey(Author, on_delete=models.CASCADE, null=True, blank=True)
如果您不希望该字段为nullable
,则必须传递一次默认值。该值必须是现有pk
对象的Author
值,而不是datetime
对象。