在django视图中使用queryset Q时出错



我正在使用Q创建动态查询集当我打印

build_query[:-1]

我得到输出

Q(owner_id=1)|Q(assigned_to=1)

,但是当使用

consultants = Consultant.objects.filter(*build_query[:-1])

得到一个错误,太多的值无法解包我用**试过,没有**仍然不起作用。当我检查

的类型
print type(build_query[:-1])

我正在获取字符串类型。这是主要原因吗?

回溯

Internal Server Error: /api/consultants/my_consultants/
Traceback (most recent call last):
  File "/home/jagmeet/consultadd_workspace/devenv/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/jagmeet/consultadd_workspace/devenv/local/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 57, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/jagmeet/consultadd_workspace/devenv/local/lib/python2.7/site-packages/rest_framework/viewsets.py", line 85, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/jagmeet/consultadd_workspace/devenv/local/lib/python2.7/site-packages/rest_framework/views.py", line 451, in dispatch
    response = self.handle_exception(exc)
  File "/home/jagmeet/consultadd_workspace/devenv/local/lib/python2.7/site-packages/rest_framework/views.py", line 448, in dispatch
    response = handler(request, *args, **kwargs)
  File "/home/jagmeet/consultadd_workspace/devenv/ckiller/consultants/api.py", line 170, in my_consultants
    consultants = Consultant.objects.filter(*build_query[:-1])
  File "/home/jagmeet/consultadd_workspace/devenv/local/lib/python2.7/site-packages/django/db/models/manager.py", line 92, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
Q(owner_id=1)|Q(assigned_to=1)
  File "/home/jagmeet/consultadd_workspace/devenv/local/lib/python2.7/site-packages/django/db/models/query.py", line 691, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/home/jagmeet/consultadd_workspace/devenv/local/lib/python2.7/site-packages/django/db/models/query.py", line 709, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/home/jagmeet/consultadd_workspace/devenv/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1331, in add_q
    clause, require_inner = self._add_q(where_part, self.used_aliases)

consultants = Consultant.objects.filter(*build_query[:-1])

你试过了吗?

Consultant.objects.filter (* [build_query (: 1)])

参数应该是一个列表

相关内容

  • 没有找到相关文章

最新更新