Django 过滤器问题 - 如何删除具有最新日期的单个项目?



我有 1 个数据库,主数据库实际上有一个复合主键,ID 和日期,我的系统允许某些用户从此数据库中删除。我正在尝试做的是让他们输入一个 ID,然后删除具有该 ID 的行,但只删除最近的日期。

我尝试过滤 ID,然后链接最新方法,我也尝试使用顺序并选择第一个条目。

toDelete = Master.objects.filter(Identifier=id).latest('EffectiveDate')
toDelete.delete()

当我调用 delete 时,此语句会删除数据库中与 ID 匹配的所有条目,我试图让它只删除最后一个要发生的条目。

这应该为您提供最新的日期,然后您可以删除:

toDelete = Master.objects.filter(Identifier=id).order_by('-EffectiveDate')[0]
toDelete.delete()

也许,您只想获取第一条记录,您可以使用:

toDelete = Master.objects.filter(Identifier=id).latest('EffectiveDate').first()
toDelete.delete()

线路-Master.objects.filter(Identifier=id).latest('EffectiveDate')返回该记录的标识(不仅仅是记录(,因此当您调用 delete- 时,它会删除所有匹配项,而不仅仅是第一个事件。 更多在这里

如果您的模型中有create_date(节省创建数据的时间(字段,例如:

created_date = models.DateTimeField(auto_now_add=True)

然后你可以试试:

toDelete = Master.objects.filter(Identifier=id).order_by('-create_date')
if toDelete:
toDelete = toDelete[0]
toDelete.delete()

最新更新