【问题标题】:'Value' object does not support indexing“值”对象不支持索引
【发布时间】:2013-04-12 12:43:58
【问题描述】:

这是我编写的一些代码,用于给出高级搜索的结果,这些子通道具有不同的表中的属性和属性值。它给了我这个错误:'Value' object does not support indexing at line 35

sub_id = request.GET['sub_ch_id']
attributes = Attribute.objects.filter(subchannel_id = sub_id)
values =[]
print "attributes"
# print request
post = []
value_obj =[]
for w in attributes:
    name = w.name
    print request.GET[name]
    values.append(request.GET[name])



result_search_obj = []
flag = False
result_search = []
result = []
post = []
i = 0
f = i+1
# post_temp = ""

# print "HIIIIII", len(result_search_obj)
for j in range(0,len(attributes)):
    # print 'EREEEEEEE'
    result_search_obj+=(Value.objects.filter(attribute_id = attributes[j].id 
        , value = values[j]))
    # print '1st loop'
result_search = [[] for o in result_search_obj]    
for k in range(0,len(result_search_obj)):
    # print '2 loop'
    for l in range(0,len(result_search_obj)):
        print 'why u dnt go here'

        result_search[k].append(result_search_obj[k][l].Post_id)
        # print '4 loop'
for a in range(0,len(result_search)):

    result_search.sort(len(result_search[k]))
    # print '6 loop'
for h in range(0,len(result_search)):

    post_temp = ""
    # print '3 loop'
    for g in result_search[h]:
        tmp=result_search[h]
        loc = temp[g]
        if loc == result_search[h+1][g]:
            flag = True
            post_temp = tmp[g]
            break
    post = post_temp
print post

return HttpResponse('filter_post_channel.html', {'posts' : post})

【问题讨论】:

  • 亲爱的 Mohamed,您的代码中的第 35 行是空的,这是您的完整文件吗?或者你能指出哪一行引发了错误?
  • 请在第一次循环后显示print result_search_obj 的输出

标签: python django advanced-search


【解决方案1】:

我认为问题出在这一行:

result_search_obj+=(Value.objects.filter(attribute_id = attributes[j].id 
    , value = values[j]))

您正在创建一个元组并将其附加到一个列表中。您希望将元组添加为元组,但 Python 将元组展平并添加其元素。

所以你需要改变你的行来创建一个列表并将它附加到result_search_obj

result_search_obj+= [ (Value.objects.filter(attribute_id = attributes[j].id 
    , value = values[j])) ]

样本测试

>>> x=[]
>>> x += (1, 2)
>>> x
[1, 2]
>>> x += [(1, 2)]
>>> x
[1, 2, (1, 2)]
>>> x += (1, 2)
>>> x
[1, 2, (1, 2), 1, 2]
>>> 

【讨论】:

    猜你喜欢
    • 2014-04-23
    • 2019-11-12
    • 2017-09-20
    • 1970-01-01
    • 2013-08-23
    • 2018-01-07
    • 2013-06-23
    • 2019-04-18
    • 2017-12-28
    相关资源
    最近更新 更多