收到错误<follower:follower =“” object =“”(无)=“”>实例未保存。使用bulk = False或先保存对象

时间:2019-04-01 20:11:56

标签: django django-models manage.py

我正在尝试在Django中创建关注功能。我正在使用以下模型。我想测试一下在django manage.py shell上是否可以工作。当我执行相关导入并运行

user1.following.add(Follower(following=user2))

我收到以下错误

  

<关注者:关注者对象(无)>实例未保存。   使用bulk = False或先保存对象。

这是什么原因?

models.py

class Follower(models.Model):
    follower = models.ForeignKey(User, related_name='following',on_delete=models.PROTECT)
    following = models.ForeignKey(User, related_name='followers',on_delete=models.PROTECT)

    class Meta:
        unique_together = ('follower', 'following')

    def __unicode__(self):
        return u'%s follows %s' % (self.follower, self.following)

2 个答案:

答案 0 :(得分:1)

我不知道您期望发生什么。如错误所示,您尚未保存该Follower对象。

但是,无论如何,这似乎并不是正确的方法。我认为,您只想与两个用户一起创建一个Follower对象:

Follower.objects.create(follower=user1, following=user2)

直接将其添加到两侧。

更好的是,完全删除您的Follower模型,并在User上将其ManyToMany关系声明回“ self”,并使用symmetrical = False。

答案 1 :(得分:0)

错误是不言自明的,您必须在添加 Follower 对象时使用 bulk = False

user1.following.add(Follower(following=user2),bulk=False)

原因是您要在ManyToMany(即关注者)模型中创建一条记录。