如何解决错误“ ValueError:<follower:follower =“” object =“”(无)=“”>实例未保存。”使用bulk = False或先保存对象。 ”

时间:2019-06-01 17:47:39

标签: python django github

我想创建一个追随者系统,但得到一个“ ValueError:实例未保存”。使用bulk = False或先保存对象。 “。请如何解决这个问题,对不起,我写得不好!

#my models.py

from django.db import models
from django.contrib.auth import get_user_model

User = get_user_model()


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

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


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

#in the interpreter
>>> from followers.models import *

>>> john = User.objects.create_user('john', 'lennon@thebeatles.com', 'password')
>>> paul = User.objects.create_user('paul', 'mccartney@thebeatles.com', 'password')
>>> george = User.objects.create_user('george', 'harrison@thebeatles.com', 'password')
>>> ringo = User.objects.create_user('ringo', 'starr@thebeatles.com', 'password')

#the mistake comes from here
>>> john.following.add(Follower(following=paul))

我明白了

添加“对象首先”。 %目标 ValueError:实例未保存。使用bulk = False或先保存对象。

1 个答案:

答案 0 :(得分:0)

您应该创建一个bill = Point(x=5, y=9) will = Rectangle(topLeft=2, width=4, height=1) 对象,例如:

Follower

您可以未保存的对象添加到一对多一对多关系,因为那时他们还没有主键。由于这里的Follower.objects.create(follower=john, following=paul)是不可为空的,因此您不能先保存两个关系之一的ForeignKey对象,然后再使用Follower添加另一端,但是无论如何,这会更昂贵,因为它会导致两个查询。

您还可以批量制作.add(..)个对象,例如:

Follower