Django - 结合数据表视图和表单视图

Django - Combining a datatable view and form view

我正在尝试将来自数据table 的table 和一个脆皮表格放入一个视图中,以便我可以在django 的单个页面上显示它。我完全不知道如何组合它们,因为我还是个新手。

非常感谢任何帮助!!

Views.py ------------- Datatable below
    class CustomerTable(XEditableDatatableView):
        template_name = "customers.html"
        model = Customer
        datatable_options = {
            'columns': [
                        ("Title", 'Title'),
                        ("Name", 'PoC', helpers.make_xeditable),
                        ("Email", 'PoCEmail', helpers.make_xeditable),
                        ("Location", 'Location', helpers.make_xeditable),
                        ("DateAdded", 'DateAdded', helpers.make_xeditable),
                        ],
            'hidden_columns': ['ID'],
        }

           -----------Crispy Form below
        def CustomerView(request):
            form = CustomersForm(request.POST or None)
            success = False
            if request.method == 'POST':
                if form.is_valid():
                    form.save()
                    form = CustomersForm()
                    success = True
            if request.POST.get('delete'):
                obj.delete()
            customer_form = CustomersForm()
            return render(request, 'customers.html', {'customer_form': customer_form})


urls.py ----------------
    urlpatterns = patterns('',
        url(r'^$', views.CustomerTable.as_view(), name='customertable'),
        url(r'^$', 'ISL.views.CustomerView', name='customersform'),
    )

感谢您的帮助! W

您可以像这样尝试使用 class 的 get_context_data() 方法:

    def get_context_data(self, **kwargs):
        context = super(CustomerTable, self).get_context_data(**kwargs)
        # do your magic here <<<
        # then
        context['customer_form'] = customer_form
        return context

首先您通过超级内置函数调用祖先的 get_context_data 方法,然后您可以将您想要的任何内容附加到上下文,在您的示例中它是自定义表单。在此之后,您可以在模板中访问 'custom_form'。

不幸的是,我现在无法测试它,但是这个方法必须通过 ContextMixin 附加在祖先中(关于这个方法的 django 文档:https://docs.djangoproject.com/en/1.8/ref/class-based-views/mixins-simple/)。