首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python/Django:选择一对多关系的最大值并在HTML/View中显示

Python/Django:选择一对多关系的最大值并在HTML/View中显示
EN

Stack Overflow用户
提问于 2017-10-15 06:51:04
回答 2查看 1.2K关注 0票数 3

好样的,我是Django和python的初学者,两天前刚开始学习。这个qn与这个问题有关:

Python/Django:如何在HTML中同时显示主模型和外键模型

在一个(危机)到多个(计划)关系中,我有两个模型,模型如下所示:

代码语言:javascript
复制
class Plan(models.Model):
    plan_ID = models.CharField(
        primary_key=True,
        max_length=8,
        validators=[RegexValidator(regex='^\w{8}$', message='Length has to be 8', code='nomatch')]
    )
    plan_crisisID = models.ForeignKey(Crisis, on_delete=models.CASCADE)
    plan_status = models.CharField(max_length=50)

class Crisis(models.Model):
    crisis_ID = models.CharField(
        primary_key=True,
        max_length=4,
        validators=[RegexValidator(regex='^\w{4}$', message='Length has to be 4', code='nomatch')]
    )
    crisis_name = models.CharField(max_length=50)

当前,显示的数据如下所示:

我一般都是django/python的新手,我不知道如何过滤数据,使我只显示每一次危机,并报告最高值的ID。我想要的最终结果如下:

以下是我的views.py部分:

代码语言:javascript
复制
def home(request):
    template = loader.get_template('pmoapp/home.html')
    planList = Plan.objects.filter(plan_crisisID__crisis_status='Ongoing')

    context = {
        #'crisisList': crisisList,
        'planList': planList
    }
    return HttpResponse(template.render(context, request))

如何编写循环函数以获得每个planID的最大值?任何帮助都将不胜感激。非常感谢你..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-15 08:55:26

您也可以尝试使用注解

代码语言:javascript
复制
from django.db.models import Max

Plan.objects.values('plan_crisisID__crisis_ID').annotate(max_pk=Max('plan_ID'))
票数 2
EN

Stack Overflow用户

发布于 2017-10-15 08:15:20

经过一些尝试,我做了这样的事情:

代码语言:javascript
复制
for crisis in crisisList:
    plansInCrisis = planList.filter(plan_crisisID__crisis_ID=crisis.crisis_ID)
    max = plansInCrisis[0]
    for plan in plansInCrisis:
        if(plan.plan_ID > max.plan_ID ): max = plan
    toDisplay.append(max)

由于我对python编程还不熟悉,所以如果我不使用任何内置的方法就循环两次,我认为这是个糟糕的实践,但它现在起作用了。为这个可怜的问题道歉,干杯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46752477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档