我正在寻找将 List 和 Create 功能与通用类 View 结合起来的最简单方法。
我想要一个包含项目列表和用于在底部添加新项目的表单的页面。
我认为 mixin 架构允许组合必要的类,但我还没有运气。
这几乎可以工作:
class ResourceListView(ListView, BaseCreateView):
context_object_name = 'resources'
model = Resource
form_class = ResourceForm
但是 form
在模板内部不可访问,并且在无效输出时崩溃(当 form 有效时,没问题)。
这可能与多重继承有关,但我还不是很喜欢 Python,所以它太困惑了。
有没有一种简单的方法来组合一些 mixins进入“查看并创建” View ,还是我必须推出自己的 View ?
最佳答案
Note: I no longer advocate this solution, as this is a much cleaner one.
通过反复试验(并查看 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
创建和列出都很好(尽管它可能会发出一些额外的数据库调用,不确定)。
关于python - 我可以使用 mixin 组合基于 Create 和 List 类的通用 View 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591529/