Django 使用 add 添加一个 ManyToManyField,其中对象'self'



当我执行以下代码时,配置文件按预期添加到user_profile.follow,但user_profile也被添加到配置文件中.follow(这是不需要的)为什么会发生这种情况,我有一种感觉它与外键是"自我"有关,但我不确定如何解决它......以下是视图:

def follow(request, profile_id):
    user = request.user
    profile = get_object_or_404(Profile, pk=profile_id)
    user_profile = get_object_or_404(Profile, pk=user.id)
    user_profile.following.add(profile)

    return HttpResponseRedirect(reverse('twitter:profile', args=(profile.id,)))

和模型:

class Profile(models.Model):
    user = models.ForeignKey(User)
    bio = models.TextField()
    image = models.ImageField(upload_to='images/%Y/%m/%d/')
    following = models.ManyToManyField('self')

好吧,经过更多的窥探,我终于找到了答案,以防其他人想知道解决方案:在模型中,以下内容应该是

following = models.ManyToManyField('self', symmetrical=False)

最新更新