您正在尝试在没有默认值的情况下向流中添加不可为空的字段 'post';我们不能那样做

You are trying to add a non-nullable field 'post' to stream without a default; we can't do that

我有models.py

  class Stream(models.Model):

        following = models.ForeignKey(User, on_delete=models.CASCADE, 
        related_name='stream_following')
        user = models.ForeignKey(User, on_delete=models.CASCADE)
        post = models.ForeignKey(Post, on_delete=models.CASCADE)
        date = models.DateTimeField()

和函数

  def add_post(sender, instance, *args, **kwargs):

    post = instance 
    user = post.user 
    followers = Follow.objects.all().filter(following=user)
    for follower in followers:
        stream = Stream(post=post, user=follower.follower, date=post.posted, following=user)
        stream.save()

当我尝试命令 py manage.py makemigrations 我有一个问题。

您正在尝试将不可为空的字段 'post' 添加到没有默认值的流中;我们不能那样做(数据库需要一些东西来填充现有行)。 请 select 修复:

  1. 现在提供一次性默认值(将在所有现有行上设置此列的空值)
  2. 退出,让我在models.py中添加一个默认值 Select一个选项:

如何解决?我把默认smth。但是在函数 add_post 中我添加了 date=post.posted 谢谢!

您可能更改了模型,而它已经有数据了

您可以选择:

一个。从该模型中删除数据并重新进行迁移,或者

b。删除迁移和 sqlite 文件并重新进行迁移,或者

c。通过输入 1 选择“现在提供一次性默认值”,然后添加一个随机的现有 ID 号(但它可能会弄乱您的数据),或者

d。将 blank=True,null=True 添加到模型中的所有字段并重新迁移,