好样的,我是Django和python的初学者,两天前刚开始学习。这个qn与这个问题有关:
Python/Django:如何在HTML中同时显示主模型和外键模型
在一个(危机)到多个(计划)关系中,我有两个模型,模型如下所示:
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部分:
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的最大值?任何帮助都将不胜感激。非常感谢你..。
发布于 2017-10-15 08:55:26
您也可以尝试使用注解
from django.db.models import Max
Plan.objects.values('plan_crisisID__crisis_ID').annotate(max_pk=Max('plan_ID'))发布于 2017-10-15 08:15:20
经过一些尝试,我做了这样的事情:
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编程还不熟悉,所以如果我不使用任何内置的方法就循环两次,我认为这是个糟糕的实践,但它现在起作用了。为这个可怜的问题道歉,干杯
https://stackoverflow.com/questions/46752477
复制相似问题