【发布时间】:2018-11-15 17:33:17
【问题描述】:
我有一个名为 Follow 的模型,其中包含以下字段:
class Following(models.Model):
target = models.ForeignKey('User', related_name='followers', on_delete=models.CASCADE)
follower = models.ForeignKey('User', related_name='targets', on_delete=models.CASCADE)
def __str__(self):
return '{} is followed by {}'.format(self.target, self.follower)
我要创建的是一个关注按钮,当按下该按钮时,会给目标一个关注者。在具有关注按钮的视图内部,具有以下逻辑:
class ProfileView(DetailView):
model = User
slug_field = 'username'
template_name = 'oauth/profile.html'
context_object_name = 'user_profile' # Without this, Django would default to request.user instead which is the logged in user
def post(self, request, slug):
follower = self.request.user
self.object = self.get_object()
context = self.get_context_data(object=self.object)
follow_unfollow(follower, self.object.id) # Error is found inside this function
return render(request, self.template_name, context=context)
def follow_unfollow(follower, id):
target = get_object_or_404(User, id=id)
if follower.is_authenticated():
if follower in target.followers.all():
target.followers.delete(follower)
else:
target.followers.create(follower) # Error outputs: create() takes 1 positional argument but 2 were given
当我们想为新的关注者创建一行时,会发生错误,提示 create() takes 1 positional argument but 2 were given 我在做什么错?
【问题讨论】: