0

私は写真ギャラリーを建てています。公開されているものは私に必要なものを与えてくれないので、私はそれを傷から作ります。日付順に並び替えられていない正しい順序のクエリーセットを外部キーでソートする方法は?

インデックスページでは、フォトモデルから写真(random)の1つを持ってくるためにアルバムモデルと各アルバムのランダムなアルバム(これは問題ありません)を取得する必要があります。

モデル:

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)) 

多分私はこれを複雑に上だと、おそらくいくつかのいずれかが、私はこのスルー得るのを助けることができます。

10倍

、 エレズ

答えて

1

tryiungがなければ、あなたのクエリを変更するには、私の代わりに長いリストの(album, photo)tuplesのリストを使用することをお勧め:今使用

for album in albums: 
    album_list.append((album, Photo.objects.filter(album=album).order_by('?')[0])) 

{{ for album, photo in album_list }} 

(アルバムに0枚の写真があればどうなるか確認してください)

+0

Udiに感謝し、チェーンステートメントを削除しますか? – Erez

+0

はい、 'album_photo_lst'と' chain'を削除してください – Udi

+0

本当にありがとうございます。実際の画像形式をIMGタグに取得するのに問題がありますが、これを解決する必要がある別の問題です。 – Erez

関連する問題