【问题标题】:getting error while using queryset Q in django view在 django 视图中使用 queryset Q 时出错
【发布时间】:2015-09-26 05:13:38
【问题描述】:

我正在使用 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)

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

【问题讨论】:

    标签: python django django-queryset django-q


    【解决方案1】:

    你试过了吗:

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

    args 应该是一个列表

    【讨论】:

      猜你喜欢
      • 2012-03-31
      • 2019-11-11
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 2016-11-24
      • 2012-12-26
      • 2011-03-14
      • 1970-01-01
      相关资源
      最近更新 更多