3

次のような状況を解決したいと思います。

アクティブユーザーの情報を含むサイドパネルがあります。このためには、UserInfoモデルのインスタンスをビューに渡す必要があります。

さらに、他の多くのモデルインスタンスをページに渡したいと思います(例:購入、お気に入りなど)。

get_context_dataをオーバーライドすることで、これを行うのは非常に簡単です。

def get_context_data(self, **kwargs):
    kwargs['purchases'] = Purchases.objects.get(id=1)
    kwargs['favourites'] = Favourites.objects.get(id=1)
    .... etc
    return super(UploadFileView, self).get_context_data(**kwargs)

だから私の質問は-これに使用するのに最適/最も適切なCBVは何でしょうか?

4

2 に答える 2

6

DetailView複数のオブジェクトがあるため、これは完全ではありませんが、ListViewどちらでもありません。また、FormViewまたはその子のようにも見えません。

それらから何も得られないので、単純なTemplateViewがおそらく行く方法です。

于 2012-10-18T19:58:19.377 に答える
2

複数のビューで同じUserInfo、Purchases、Favoritesなどをクエリする場合は、再利用できるMixinを作成します。

class CommonUserInfoMixin (object):
    def get_context_data(self, **kwargs):
        context = super(OrgContextMixin, self).get_context_data(**kwargs)
        ... # Add more to context object

次に、これを通常のリスト、詳細、更新などのCBVで使用できます。

class ItemList(CommonUserInfoMixin, ListView):
    ....
于 2013-01-12T18:01:56.360 に答える