首页 > 解决方案 > 相应地获取模型的所有布尔值

问题描述

我正在构建一个博客应用程序,并且我正在尝试获取Profile模型的所有布尔值。我之前尝试制作一个布尔值列表,但后来它不符合要求。

文件模型.py

class Profile (models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, unique=True)
    name = models.CharField(max_length=30)
    first_boolean = models.BooleanField(default=False)
    second_boolean = models.BooleanField(default=False)
    third_boolean = models.BooleanField(default=False)

文件视图.py

def page(request):
    All_Booleans = Profile.objects.filter()

    context = {'Booleans_List'}
    return render(request, 'page.html', context)

我也试过Ffrom django.db.models import F类的:

All_Booleans = Profile.objects.filter(F(first_boolean=request.user) | F(second_boolean=request.user))

但它显示:

init () 得到了一个意外的关键字参数“first_boolean”

我想做什么?-

我正在尝试获取Profile Modelrequest.user的所有布尔字段

但我该怎么做呢?

标签: pythondjangodjango-modelsdjango-viewsdjango-queryset

解决方案


您可以使用以下命令获取Profile已登录用户的 :

from django.contrib.auth.decorators import login_required

@login_required
def page(request):
    profile = Profile.objects.get(user=request.user)
    return render(request, 'page.html', {'profile': profile})

然后,在模板中,您可以使用以下方式渲染其布尔字段profile

one: {{ profile.first_boolean }}
two: {{ profile.second_boolean }}
three: {{ profile.third_boolean }}

您可以将布尔值添加到列表中,并在模板中使用它们以及:

@login_required
def page(request):
    profile = Profile.objects.get(user=request.user)
    data = [profile.first_boolean, profile.second_boolean, profile.third_boolean]
    return render(request, 'page.html', {'profile': profile, 'data': data})

然后,例如,您可以使用以下方式渲染它:

{% for item in data %}
    {{ item }}
{% endfor %}

注意:您可以使用@login_required装饰器 [Django-doc]将视图限制为经过身份验证的用户的视图 。


注意:通常使用settings.AUTH_USER_MODEL[Django-doc]引用用户模型比直接使用User模型 [Django-doc]更好。

有关更多信息,您可以查看文档的引用User模型部分


推荐阅读