Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:在执行makemigration时,新字段添加会出错_Django_Django Models - Fatal编程技术网

Django:在执行makemigration时,新字段添加会出错

Django:在执行makemigration时,新字段添加会出错,django,django-models,Django,Django Models,我有一篇关于博客模型的帖子: сlass Post(models.Model): author = models.ForeignKey(User, related_name="blog_posts", on_delete=models.CASCADE) ........ ........ 我想在项目中添加一个标记,所以我制作了一个标记模型: class Tag(m

我有一篇关于博客模型的帖子:

сlass Post(models.Model):
    author = models.ForeignKey(User,
                               related_name="blog_posts",
                               on_delete=models.CASCADE)
........
........
我想在项目中添加一个标记,所以我制作了一个标记模型:

class Tag(models.Model):
    tag_name = models.CharField(max_length=20,
                            blank=True)

    def __str__(self):
        return self.tag_name
我在Post模型中添加了以下内容:

tag = models.ForeignKey(Tag, related_name="blog_tag",
                        on_delete=models.CASCADE)
但请告诉我一个错误:

You are trying to add a non-nullable field 'tag' to post without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
 2) Quit, and let me add a default in models.py
那么为什么我必须填充现有的行呢?我怎么能过着空无一人的生活呢?
注意:如果我选择1,我仍然有一个错误。

您的数据库中已经有数据,现在您正在数据库表中添加一个新的列标记,该标记也不是空的


所以django说要么为以前存在的行提供一个默认数据,要么通过在字段的参数中添加null=True使这个新列标记成为null值,这样已经存在的行将用null填充它。

谢谢你的解决。现在我的模型看起来是这样的:“class Postmodels.Model:tag=models.ForeignKeyTag,related\u name=blog\u标记,on\u delete=models.CASCADE,blank=True,null=True”