0

私は、描画、モーション、Web の 3 つの主要なカテゴリを持つ「作業」モデルを持っています。カスタムコンテキストプロセッサ内でキャッシュを作成しようとしています:

#custom context processor
works = cache.get(cache_key_works)
if not works:
    workList = Work.objects.filter(publish=1).order_by('-publish_from')
    works = {'drawings': [], 'webdesigns': []}
    for w in workList:
        s = w.category.get_root().slug_en
        if s == 'drawing':
            works['drawings'].append(w)
        elif s == 'web-design':
            works['webdesigns'].append(w)
return {'WORKS': works}

カテゴリに応じてテンプレートでWORKSを使用するより...

これは良い習慣ですか、それとも不必要な習慣ですか?

4

1 に答える 1

1

それは機能し、不必要な練習ではありません。適切なキャッシュを持つことが重要ですが、なぜあなたがそうしているようにWorkQuerySet をループしているのかについて少し混乱しています。

これはうまくいきませんか:

#custom context processor
works = cache.get(cache_key_works)
if not works:
    drawings = Work.objects.filter(publish=1, category__root__slug='drawing').order_by('-publish_from')
    web_designs = Work.objects.filter(publish=1, category__root__slug='web_designs').order_by('-publish_from')
    worktypes = {'drawings': drawings, 'web_designs': web_designs}

return {'work_types': work_types}

注:category__root__slug='drawing'は、正しいモデル構造に置き換える必要があるため、概念的なものです。またwork_types、キャッシュ ミスが発生した場合でも、バックをキャッシュに入れることはありません。これも確認する必要があります。

于 2013-08-19T09:25:49.890 に答える