使用布尔QuerySet

时间:2017-09-27 13:41:27

标签: python django

我在处理布尔查询集时遇到了麻烦。

models.py:

 class Profile(models.Model):
     user = models.OneToOneField(User, related_name='profile', primary_key=True)
     firstConnexion = models.BooleanField(default=True)

views.py

 firstConnexion = Profile.objects.filter(user=request.user).values('firstConnexion')

 if firstConnexion:
     Profile.objects.filter(user_id=user_id.id).update(firstConnexion=False)
     return redirect('/one/')
 else:
     return redirect('/two/')

问题是,即使Profile更新为False

,我也只能获得第一个条件

怎么样?

1 个答案:

答案 0 :(得分:1)

原因是您使用的.values()返回布尔值列表。在您的情况下,它将返回此

[False]

因此,以下将评估为True:

if [False]

因为列表中有东西。

尝试以下方法:

if request.user.profile.firstConnexion:
    ...

希望它有所帮助!