我想创建一个追随者系统,但得到一个“ 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或先保存对象。
答案 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