0
我構建過濾器作爲列表,但無法使用Q函數構建它們。這似乎是做事手動過濾器的工作,但試圖建立的連接字符串,我得到以下問題的過濾器時:在Django中構建自定義查詢過濾器列表
下面是該查詢:
MyLocationFilter = BuildQueryORFilter('MyLocationCountryCode', MyLocationCodePref1)
list = AboutMe.objects.order_by('MyLinkedInLastName').filter(reduce(OR, MyLocationFilter))
這裏是怎麼了建立這些過濾器:
def BuildQueryORFilter(fieldname, fieldvalues):
QueryList = []
spltfieldvalues = fieldvalues.split()
for item in spltfieldvalues:
strpitem = item.strip('[],')
queryitem = Q(fieldname+"__contains="+strpitem)
QueryList.append(queryitem)
return QueryList
但是這個問題似乎是如何獲得的Q(fieldname__contains=gb)
形式Q(..)而不是Q('fieldname__contains=gb')
這似乎是嘔吐的問題,如:
ValueError
Exception Value:
need more than 1 value to unpack
我該如何構建Q查詢以避免這種拆箱問題?
回溯爲可能的答案(下面)
Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/brett/LinkedIn/phaseone/jelt/views.py" in AboutMeList
259. list = AboutMe.objects.order_by('MyLinkedInLastName').filter(MyLocationFilter)
File "/usr/lib/python2.7/dist-packages/django/db/models/query.py" in filter
624. return self._filter_or_exclude(False, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/db/models/query.py" in _filter_or_exclude
642. clone.query.add_q(Q(*args, **kwargs))
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py" in add_q
1250. can_reuse=used_aliases, force_having=force_having)
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py" in add_filter
1056. arg, value = filter_expr
Exception Type: ValueError at /list/
Exception Value: need more than 1 value to unpack
我綁這一點,但打印出來queryitem篩選時,我得到:(AND(「MyLocationCountryCode__contains」,u'gb')),並試圖篩選時,我仍然得到同樣的問題。 – disruptive
你可以更新你的答案,包括完整的追溯? – Alasdair
添加了追蹤 – disruptive