[英]How to use If else in queryset in django
我需要在我的查询集中为 Value1 使用 if else 条件..我在查询集中找到了我的记录的平均值..我需要应用类似的条件..如果我的 Value1 在 90 到 110 之间,那么我必须将消息作为“很棒”,如果低于 90,则必须打印为“低”,如果高于 140,则必须打印为“高”
我需要在我的 html 文件上打印这个 output
模型.py:
from django.db import models
from django.contrib.auth.models import User
class graphinput(models.Model):
user=models.ForeignKey(User,on_delete=models.CASCADE)
Month = models.CharField(max_length=30)
Value1 = models.IntegerField()
Value2 = models.IntegerField()
网址.py:
def average(request):
userid = None
if request.user.is_authenticated:
userid = request.user.id
print(userid)
dataset = graphinput.objects.filter(user=userid) \
.values('Value1')
a=dataset.aggregate(Sum('Value1'))
b=dataset.aggregate(Avg('Value1'))
print(a)
print(b)
return render(request, 'profile.html')
avg = b.get('Value1__avg', 0)
if avg < 90:
message = 'low'
else if avg < 110:
message = 'great'
else:
message = 'high'
context = {'message': message}
return render(request, 'profile.html', context)
接下来使用{{ message }}
在模板中访问它
您可以根据其他列的值动态创建列:
from django.db.models import Case, Value, When
Graphinput.objects.annotate(
message=Case(
When(value1__lt=90, then=Value('high')),
When(value1__lt=110, then=Value('low')),
When(value1__gt=140, then=Value('great')),
default=Value('not set'),
),
).values_list('value1', 'message')
更多细节在这里。 此外,您应该以大写字母和小写变量开头 class 名称; Graphinput
和value1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.