我正在寻找将List和Create功能性与泛型类视图结合起来的最简单方法 我希望有一个页面,其中包含一个项目列表和一个在底部添加新项目的表单。
我认为mixin架构可以合并必要的类,但我还没有运气。
这几乎有效:
class ResourceListView(ListView, BaseCreateView):
context_object_name = 'resources'
model = Resource
form_class = ResourceForm
但是form
在模板内部无法访问,并且事物在无效输出时崩溃(当表单有效时,它很好)。
这可能与多重继承有关,但我还没有真正进入Python,所以它太混乱了。
是否有一种简单的方法可以将一些mixins合并到一个视图和创建视图中,还是我必须推出自己的视图?
答案 0 :(得分:4)
注意:我不再提倡这种解决方案,因为this更清洁。
通过反复试验(并查看Django源代码),我写了这个:
class ListCreateView(ListView, BaseCreateView):
def get_context_data(self, **kwargs):
self.object = None
self.object_list = self.get_queryset()
form_class = self.get_form_class()
form = self.get_form(form_class)
kwargs.update({'object_list': self.object_list, 'form': form})
context = super(ListCreateView, self).get_context_data(**kwargs)
return context
在创建和列出时都可以正常工作(虽然它可能会发出一些额外的数据库调用,但不确定)。