Я создаю фотогалерею, и те, которые публикуются, не дают мне того, что мне нужно, поэтому я создаю ее с нуля.
На главной странице мне нужно получить случайные альбомы (этов порядке) из модели «Альбом» и для каждого альбома взять одну из своих фотографий (random
) из модели «Фото».
Модели:
class Album(models.Model):
title = models.CharField('כותרת', max_length=100, db_index=True)
created = models.DateTimeField('תאריך פרסום', auto_now_add=True)
creator = models.ForeignKey(User, related_name='galleries_creator', verbose_name='נכתב ע"י')
class Photo(models.Model):
title = models.CharField('כותרת', max_length=100)
album = models.ForeignKey(Album, verbose_name='שייך לאלבום')
photo = models.ImageField('תמונה', blank=True, upload_to=get_image_path)
photo_mid = models.ImageField('תמונה בינונית', blank=True, upload_to='images/galleries/mid/', editable=False)
photo_thumb = models.ImageField('תמונה קטנה', blank=True, upload_to='images/galleries/thumbs/', editable=False)
created = models.DateTimeField('תאריך פרסום', auto_now_add=True)
is_landscape = models.NullBooleanField(blank=True, verbose_name='האם תמונת לנדסקייפ', editable=False)
Дело в том, что, как ячтобы увидеть, что для перебора альбомов в шаблоне и получения правильной фотографии для альбома мне нужно связать список альбомов и список фотографий, которые я получил, но в правильном порядке (album object, photo object etc
),но я получаю все альбомы, а затем все фотографии (в правильном порядке, но в шаблоне ничего не работает, очевидно).
Вид:
def index(request):
albums = Album.objects.all().order_by('?')[:10]
album_photo_lst = []
for album in albums:
album_photo_lst.append(Photo.objects.filter(album=album).order_by('?')[:1])
album_list = list(chain(albums,album_photo_lst))
return render_to_response('galleries/index.html',{'albums':album_list}, context_instance=RequestContext(request))
Может быть, яЯ слишком усложняю это, и, может быть, кто-нибудь поможет мне разобраться с этим.
10x, Erez