Django 属性错误位于/profile/chandan';元组';对象没有属性';另一个用户';

Django 属性错误位于/profile/chandan';元组';对象没有属性';另一个用户';,django,Django,我试图让跟踪系统工作,但它就是不工作 class Followers(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) another_user = models.ManyToManyField(User, related_name='another_user') def __str__(self): return self.user.name

我试图让跟踪系统工作,但它就是不工作

class Followers(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    another_user = models.ManyToManyField(User, related_name='another_user')

    def __str__(self):
        return self.user.name


    def profile(request, user_name):
        user_obj = User.objects.get(username=user_name)
session_user, create = User.objects.get(username=user_name)
    session_following, create = Followers.objects.get_or_create(user=session_user)
        following = Followers.objects.get_or_create(user=session_user.id)
        check_user_followers = Followers.objects.filter(another_user=user_obj)
    
        is_followed = False 
        if session_following.another_user.filter(username=user_name).exists() or following.another_user.filter(username=user_name).exists():
            is_followed=True
        else:
            is_followed=False
        param = {'user_obj': user_obj,'followers':check_user_followers, 'following': following,'is_followed':is_followed}
        if 'user' in request.session:
            return render(request, 'users/profile2.html', param)
        else:
            return redirect('index')
我得到一个错误:

AttributeError at /profile/chandan
'tuple' object has no attribute 'another_user'
返回一个2元组,第一项为对象,第二项为布尔值,指示对象是已创建(
True
),还是已存在于数据库中

您可以使用iterable unpacking将布尔值设置为“一次性”变量:

#                  ↓ throw away the second item of the 2-tuple
session_following, __ = Followers.objects.get_or_create(user=session_user)
following, __ = Followers.objects.get_or_create(user=session_user)
#↓扔掉2元组的第二项
session\u following,\u\u=Followers.objects.get\u或\u create(user=session\u user)

下面是,\uuuuu=Followers.objects.get\u或\u create(user=session\u user)
这条下划线是干什么的?@sly\u Chandan:这只是一个变量,我们用来解包元组,并将第一个项目分配给后面的
会话,第二个项目分配给
\uuuuu
,因此,
\uuu
在这里是一个特殊变量,我们需要解包2元组。无法解包不可编辑的用户object@sly_Chandan:您应该只对
.get\u或\u create
执行此操作,而不是对
.get(…)
执行此操作。我得到的是元组错误“tuple”对象没有“其他用户”属性