Подтвердить что ты не робот

Django для разрыва счетчика циклов

Это, надеюсь, быстрый/легкий. Я знаю способ обойти это с помощью специального тега шаблона, но мне было любопытно, есть ли другие методы, которые я просматривал. Я создал функцию галереи для своего блога, и у меня есть страница списка галереи, которая разбивает все мои галереи. Теперь я не хочу показывать все фотографии каждой галереи в этом списке, так как если в каждой галерее есть 20 изображений, то это 100 изображений на странице, если я разбиваю страницы на 5 сообщений. Это было бы расточительно, и это был неправильный путь, чтобы идти о чем-то.

Вопрос, который у меня есть, есть способ просто отобразить 3 фотографии из набора фотографий? То, что я хотел бы сделать, но я не думаю, что это возможно (например, псевдокод):

{% for photos in gallery.photo_set %}
   {% if forloop.counter lt 3 %}
     <img src="{{ photos.url }}">
   {% endif %}
{% endfor %}

Судя по документации, если я не полностью ее упустил, это невозможно с помощью системы шаблонов. Следовательно, я могу просто написать собственный собственный тег шаблона, чтобы обойти его. Возможно, я мог бы что-то сделать с точки зрения, но я далеко не задумался над этой идеей. Другой вариант, который у меня есть, - предоставить модели поле предварительного просмотра и разрешить пользователю выбирать фотографии, которые они хотят в поле предварительного просмотра.

В любом случае, несколько разных вариантов, поэтому я решил опросить аудиторию, чтобы посмотреть, как вы это сделаете. Любое мнение оценивается. Лично, наслаждаясь тем, что существует множество способов кожи этой кошки.

4b9b3361

Ответ 1

Использование:

{% for photos in gallery.photo_set|slice:":3" %}

Ответ 2

Это лучше сделать в коллекции 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]