获得请求的Django在Class中获取params

时间:2018-04-30 16:04:29

标签: django django-models

我有以下功能:

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参数?

1 个答案:

答案 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)