TypeError:在迁移Django模型期间,int()参数必须为字符串

时间:2019-09-22 06:08:36

标签: django django-models

添加新字段作为外键后,我遇到了问题:

一开始,我的模型是这样的:

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命令,它会指导我插入12,然后插入1,然后添加{{1 }} 它是指南:enter image description here

后来,我尝试运行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关键字段的信息,

在这种情况下有人可以建议我吗?

1 个答案:

答案 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对象。