python - 相应地获取模型的所有布尔值
问题描述
我正在构建一个博客应用程序,并且我正在尝试获取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)
我也试过F之from django.db.models import F
类的:
All_Booleans = Profile.objects.filter(F(first_boolean=request.user) | F(second_boolean=request.user))
但它显示:
init () 得到了一个意外的关键字参数“first_boolean”
我想做什么?-
我正在尝试获取Profile Model
request.user的所有布尔字段
但我该怎么做呢?
解决方案
您可以使用以下命令获取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
模型部分。
推荐阅读
- dictionary - 在 Vuex 状态中使用 Map
- sql - 如何使用一个条件从 T2 更新 T1 的列值?
- c++ - 在c++中创建dll并在delphi中调用的标准方法
- c - 在命名管道中存储 Linux 命令的输出
- sql - 从员工时钟中查找开始日期和结束日期
- java - Java 递归算法
- fortran - 调用 MPI_TYPE_CREATE_STRUCT 以创建带有可分配对象的结构后,堆内存已分配但未释放
- delphi - 透明位图作为资源?
- sql - 如果满足不同表中的另一个条件,则创建一个列并用某个值填充它?
- javascript - 有没有办法在画布上绘制一些我部分超出屏幕边界的东西?