我有以下功能:
class getAjaxView(BaseDatatableView):
model = Roles
columns = model.columns
order_columns = model.order_columns
max_display_length = model.max_display_length
def render_column(self, row, column):
if column == 'id':
return '<input type="checkbox" name="cid[]" value="{{$id}}" class="cid_checkbox flat"/>'
else:
return super(getAjaxView, self).render_column(row, column)
此处模型(例如:角色)应来自GET参数值,并且它将动态更改。如何在函数定义和初始化变量之前访问此GET参数?
答案 0 :(得分:0)
我从未使用django-datatables-view,但如果它基于djangos CBV(基于类的视图),那么您应该能够像这样访问请求数据:
def render_column(self, row, column):
...
print(self.request.GET)
...
编辑:显然,您希望根据Model
参数的值动态定义CBV的request.GET
属性。
查看this question,您可以尝试覆盖dispatch
方法并使用apps.get_model
功能。
from django.apps import apps
class AjaxView(BaseDatatableView):
def dispatch(self, request, *args, **kwargs):
self.model = apps.get_model(
app_label=request.GET.get('app_label', ''),
model_name=request.GET.get('model_name', ''))
self.columns = self.model.columns
self.order_columns = self.model.order_columns
self.max_display_length = self.model.max_display_length
return super().dispatch(request, *args, **kwargs)