如何有条件地将值传递给Django的queryset.values

时间:2018-11-08 18:52:59

标签: python django python-3.x django-forms django-views

我有一个HTML表单,正在通过get方法提交给django视图。目的是从用户表中打印用户列表,但仅打印以表格形式选择的字段,即用户将选择他们要打印的列。

在我的视图中,我检查是否选择了给定的列,然后将其附加到列表中。然后,我将此列表传递给django的queryset.values()方法。但是,它不接受列表对象作为参数。

class PrintUsers(TemplateView):
    template_name = 'users/print-users.html'

    def get(self, request, *args, **kwargs):

        context = super(PrintUsers, self).get_context_data(**kwargs)

        users_list = Member.objects.all()

        values_list = []

        if self.request.GET.get('category') == 'on':
            values_list.append("category")

        if self.request.GET.get('email') == 'on':
            values_list.append("email")

        users_list.values(values_list) # this does not work

        context['users_list'] = users_list

        return render(request, self.template_name, context=context)

我如何有条件地构建* fields值,因为文档https://docs.djangoproject.com/en/2.1/ref/models/querysets/#values对此没有解释?

0 个答案:

没有答案