尽管与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类,那将是理想的选择。