如何为django_tables2适当地使模型动态化

时间:2019-04-27 20:37:06

标签: python django python-3.x django-class-based-views django-tables2

尽管与this question非常相似,但由于我使用的是基于类的视图(而不是基于函数的视图),所以我的与众不同。

我正在尝试使表类中的模型动态化(使用django_tables2)。

class DynamicTable(tables.Table):

    class Meta:
        model = dynamic_model_here
        template_name = 'django_tables2/bootstrap-responsive.html'

我正在使用SingleTableView(几乎是SingleTableMixin),但没有找到将信息(模型)从我的视图传递到Table类的“ Meta”部分的好方法。 我该怎么做? <-这是主要问题。以下是我目前的尝试,似乎有些不明智。

我可以成功地,动态地在before_render()函数中导入模型(由于可以访问请求),但是我无法将其公开给Meta since before_render does not return anything

class DynamicTable(tables.Table):

    def before_render(self, request):
        path_info = request.path_info
        current_model_name = path_info.replace('/','')
        current_model_import = __import__(module_path, fromlist = current_model_name)
        current_model = getattr(current_model_import, current_model_name)   
        model = current_model
        return #The source code shows that before_render just returns nothing

    class Meta:
        model = dynamic_model_here
        template_name = 'django_tables2/bootstrap-responsive.html'

这向我展示的是,如果我能在与Metal.model相同的对象中处理请求的话,那我会很擅长的。

所以我当前的路线是尝试从与Meta相同的对象中的视图访问django.core.handlers.wsgi.WSGIRequest请求。我该怎么办?而且,如果有人可以推荐一种更好的方法或内置方法将参数传递给表类的Meta类,那将是理想的选择。

0 个答案:

没有答案