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

这并不完全是 a DetailView,因为您有多个对象,但它既不是 a ListView,也不是 aFormView或其子对象。

由于您没有从中获得任何收益,因此简单的TemplateView可能是要走的路。

于 2012-10-18T19:58:19.377 回答
2

如果您在多个视图中查询相同的 UserInfo、Purchase、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 回答