Python 如何在django的queryset中使用If-else

Python 如何在django的queryset中使用If-else,python,django,django-models,Python,Django,Django Models,我需要在我的查询集中为Value1使用if-else条件。我在查询集中找到了我记录的平均值。我需要应用这样的条件。如果我的Value1在90和110之间,则我必须将消息显示为“很棒”,如果它低于90,则必须打印为“低”,如果高于140,则必须打印为“高” 我需要在我的html文件上打印这个输出 Models.py: from django.db import models from django.contrib.auth.models import User class graphinpu

我需要在我的查询集中为Value1使用if-else条件。我在查询集中找到了我记录的平均值。我需要应用这样的条件。如果我的Value1在90和110之间,则我必须将消息显示为“很棒”,如果它低于90,则必须打印为“低”,如果高于140,则必须打印为“高”

我需要在我的html文件上打印这个输出

Models.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()
URL.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\uu avg',0)
如果平均值<90:
消息='低'
否则,如果平均值<110:
信息=‘很好’
其他:
消息='高'
上下文={'message':message}
返回呈现(请求'profile.html',上下文)

接下来使用
{{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')

更多细节。此外,您还应该以大写字母和小写变量开头类名<代码>图形输入和
值1

工作正常!!我在没有获取数据的情况下进行了尝试,因此没有实现..现在我可以知道0(第二个参数)是什么吗?如果“b”中没有Value1\uu avg的值,则默认值为0。这是一个python字典功能。我还有一个疑问..在我的html文件中..如果我的平均值低于90或高于110,我必须添加一个按钮..如果其下注为90-110,我需要显示按钮查看此tq,这很有帮助
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')