Python如何从对象列表中获取日期字段具有最新值的对象?

2024-04-23 13:33:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django应用程序,其中有许多项目。每个项目可以有多个预算,每次向项目中添加新预算时,该项目的现有预算应增加一个。“当前”预算应该是version_number为0的预算-因此,当尝试“获取”当前预算以便在代码的其他地方使用时,我正在做如下操作:

budgetInstance = Budget.objects.get(project = project, version_number = 0)

然而,似乎不知何故,有些项目最终得到了一些budgets,它们的version_number为0,因此数据库中的一些项目似乎有几个“当前预算”。。。在

我知道我需要修正版本控制的逻辑,这样就不会有两个budgets具有相同的version_number,但是现在,我只想获得数据库中每个项目的最新的budget。在

每个Budget对象都有如下属性:project_idversion_numberidpresentation_date,等等

因此,我现在想过滤在按version_number = 0)筛选时返回的budgets字段。据我所知,我会使用min()来完成这个任务,但是我似乎无法让它工作起来。。。在

我尝试在:Find oldest/youngest datetime object in a list处遵循已接受的答案,并在shell中运行以下内容:

^{2}$

但我得到了一个TypeError,上面写着:

TypeError: 'instancemethod' object is not iterable

为什么会这样?如何在给定的Project中的Budgets列表中搜索具有最新presentation_date字段值的列表?在


Tags: 项目djangoprojectid数据库应用程序number列表
1条回答
网友
1楼 · 发布于 2024-04-23 13:33:38

您可以使用^{}, ^{}和{a3}对象对^{}进行筛选。然后,使用^{}

from django.utils import timezone

now = timezone.datetime.now()
Budget.objects.filter(
    project=project, version_number=0, 
    presentation_date__lte=now  # p_d less than or equal now
).latest('presentation_date')

^{}不同,但与^{}非常相似,如果^{}为空,则将引发一个^{}。在

相关问题 更多 >