我想解决以下问题。
我有一个侧面板,其中包含活动用户的信息。为此,需要将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是什么?
答案 0 :(得分:6)
这不是DetailView
因为你有多个对象,但它也不是ListView
,也不像FormView
或它的孩子。
由于你从中获得了什么,一个简单的TemplateView可能就是你想要的。
答案 1 :(得分: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
然后你可以在普通的List,Detail,Update等CBV中使用它
class ItemList(CommonUserInfoMixin, ListView):
....