Ответ 1
Использование:
{% for photos in gallery.photo_set|slice:":3" %}
Это, надеюсь, быстрый/легкий. Я знаю способ обойти это с помощью специального тега шаблона, но мне было любопытно, есть ли другие методы, которые я просматривал. Я создал функцию галереи для своего блога, и у меня есть страница списка галереи, которая разбивает все мои галереи. Теперь я не хочу показывать все фотографии каждой галереи в этом списке, так как если в каждой галерее есть 20 изображений, то это 100 изображений на странице, если я разбиваю страницы на 5 сообщений. Это было бы расточительно, и это был неправильный путь, чтобы идти о чем-то.
Вопрос, который у меня есть, есть способ просто отобразить 3 фотографии из набора фотографий? То, что я хотел бы сделать, но я не думаю, что это возможно (например, псевдокод):
{% for photos in gallery.photo_set %}
{% if forloop.counter lt 3 %}
<img src="{{ photos.url }}">
{% endif %}
{% endfor %}
Судя по документации, если я не полностью ее упустил, это невозможно с помощью системы шаблонов. Следовательно, я могу просто написать собственный собственный тег шаблона, чтобы обойти его. Возможно, я мог бы что-то сделать с точки зрения, но я далеко не задумался над этой идеей. Другой вариант, который у меня есть, - предоставить модели поле предварительного просмотра и разрешить пользователю выбирать фотографии, которые они хотят в поле предварительного просмотра.
В любом случае, несколько разных вариантов, поэтому я решил опросить аудиторию, чтобы посмотреть, как вы это сделаете. Любое мнение оценивается. Лично, наслаждаясь тем, что существует множество способов кожи этой кошки.
Использование:
{% for photos in gallery.photo_set|slice:":3" %}
Это лучше сделать в коллекции gallery.photo_set
. Жестко закодированное "3" в шаблоне - плохая идея в конечном итоге.
class Gallery( object ):
def photo_subset( self ):
return Photo.objects.filter( gallery_id = self.id )[:3]
В вашей функции просмотра вы можете делать такие вещи, как выбор трех случайных фотографий или 3 последних фотографий.
def photo_recent( self ):
return Photo.objects.filter( gallery_id = self.id ).orderby( someDate )[:3]
def photo_random( self ):
pix = Photo.objects.filter( gallery_id = self.id ).all()
random.shuffle(pix)
return pix[:3]