python - 我可以使用 mixin 组合基于 Create 和 List 类的通用 View 吗?

标签 python django django-generic-views django-1.3 django-class-based-views

我正在寻找将 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/

相关文章:

python - 列表上环绕运行窗口

python - Django 中的 Meta 到底是什么?

python - Django 模型完整性错误 : NOT NULL constraint failed:

django-rest-framework - 如何在DRF中获取并显示父序列化器中的所有子对象

python - 使用 tkinter 变量类作为类属性是不好的做法吗?

python - Pandas - 两列的直方图?

python - 如何一次打印()一个命令

python - Django - 使用进度条将文件上传到云(Azure blob 存储)

django - Django 中通用 ListView 中的多个模板

python - Django-haystack 通用 SearchView - 无结果