繁体   English   中英

如何在 django 的查询集中使用 If else

[英]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 名称; Graphinputvalue1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM