【发布时间】:2014-04-05 22:28:05
【问题描述】:
我在为我的成像站点选择下一个和上一个记录时遇到问题。 场景非常简单。但这让我有点困惑
我有图像列表,按添加日期排序。 (最近较早)。
Picture.objects.all().order_by('-created_at')
当用户打开一张图片时,我必须给出下一张和上一张图片的链接。
image = Picture.objects.get(id=pic_id)
next = Picture.objects.filter(created_at__lte=image.created_at)
previous = Picture.objects.filter(created_at__gte=image.created_at)
if next:
next = next.exclude(id=image.id).order_by('-created_at')[0]
if previous:
previous = previous.exclude(id=image.id).order_by('created_at')[0]
return (next, previous)
这里的问题是,当两张或多张图片的created_at日期相同时,就会出现less than or equal检查失败的问题。如果我将其限制为less than,则不会在下一个或上一个中选择具有相同日期和时间的图片。 `
(多文件上传同时将图片保存在数据库中)
请检查代码,看看我需要改进的地方。
谢谢。
【问题讨论】:
-
根据 Andrew 的回答,您还需要对 id 进行排序。只是觉得值得一提的是使用
DateTimeField而不仅仅是DateField也会有所帮助