Скажите, что у меня есть список фотографий, заказанных датой создания, следующим образом:
class Photo(models.Model):
title = models.Char()
image = models.Image()
created = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ('-created',)
У меня есть произвольный фото объект photo_x. Существует ли простой способ найти предыдущие и следующие фотографии положением в queryset? Кроме того, я хотел бы повториться, если я в начале/конце и имею его не, перестали работать если только 1 или 2 фотографий.
Вам повезло! Django по умолчанию создает методы get_next_by_foo
и get_previous_by_foo
для DateField
и DateTimeField
, если у них нет [= 11324] 1132411].
Например:
>>> from foo.models import Request
>>> r = Request.objects.get(id=1)
>>> r.get_next_by_created()
<Request: xyz246>
И если вы дойдете до конца набора, это вызовет исключение DoesNotExist
, которое вы можете легко использовать в качестве триггера для возврата к началу набора :
>>> r2 = r.get_next_by_created()
>>> r2.get_next_by_created()
...
DoesNotExist: Request matching query does not exist.
Дополнительная литература: Дополнительные методы экземпляра