编写既显示基于日期的对象又显示表单的基于类的视图的最佳方法是什么?用例是一个站点索引页面视图,它既显示今天的对象,又具有联系表。
起初我想使用 TodayArchiveView 和ContactFormView作为我的站点索引页面视图的 mixin。但是,TodayArchiveView 继承自 BaseDateListView,ContactFormView 继承自 ProcessFormView。ProcessFormView 和 BaseDateListView 都实现了 get() 并最终使用非常不同的数据调用 render_to_response ,所以我认为这不起作用,因为即使我可以通过 super 调用两者,也会返回哪个?(我什至不确定我对此的想法是否正确;我仍在考虑多重继承。)
然后我想编写我自己的 get() 来结合两个 get 的功能,因为据我所知,它们的功能不会冲突。所以最终看起来像:
def get(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
self.date_list, self.object_list, extra_context = self.get_dated_items()
context = self.get_context_data(form=form, object_list=self.object_list,
date_list=self.date_list)
context.update(extra_context)
return self.render_to_response(context)
这是正确的方法吗?
作为一个更大的问题,你怎么知道哪些 mixin 可以相互使用?我必须去 django 源代码才能意识到这两个类都在实现 get()。