在我的一个项目 Django 应用程序中,我有一个自定义 mixin,用于修改基于日期的对象的基于类的通用视图:
class MyCoolMixin(ArchiveIndexView):
"""
ArchiveIndexView mixin with my customizations
"""
allow_empty = True
make_object_list = True
date_field = 'pub_date'
# Pass in some custom request vars
def get(self, request, *args, **kwargs):
# Cool stuff here
# including getting
# my context data
return self.render_to_response(context)
class MyNewArchiveIndexView(MyCoolMixin, ArchiveIndexView):
pass
它工作得很好。太好了,事实上,我想在站点范围内应用它,而不仅仅是这个特定的应用程序。但是,在 Django 1.4 的项目布局中,我不确定站点范围内的基于类的通用视图覆盖 mixin 应该存在于何处。在根views.py?
/path/to/myproject/myproject/views.py
然后我是否只需在每个应用程序中导入修改后的通用视图以确保它可用?
此外,在我的各种应用模型中,我有不同的日期字段(有时是pub_date或start_date)。知道如何将它传递到 mixin 中,以便我可以覆盖通用视图date_field设置吗?
我正在寻找一种最佳实践,但我还没有看到新的基于类的通用视图 + mixins。