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”