带有 flat=True 的 Values_list 仍然显示括号

Posted

技术标签:

【中文标题】带有 flat=True 的 Values_list 仍然显示括号【英文标题】:Values_list with flat=True still showing brackets 【发布时间】:2019-01-22 08:38:48 【问题描述】:

所以我有这个 html 代码:

<legend><h1 > Weapons that this character has </h1></legend>
    <div>
        <ul style="list-style-type:none" >
            % if request.GET.idChar %
            <li > charname  Has Maihand  mh  and Offhand  oh </li> 
            % else %
            <li>no</li>
            % endif % 
        </ul>


    </div>

问题是 charname 、 mh 和 oh 在我在 views.py 的行中添加 flat=True 后仍然显示括号,实际上它们停止显示括号,但仍显示括号。我也试过named=True,named=bool,flat=bool。还尝试了 values 而不是 values_list...

Views.py:

def character_weapons (request):
    idchar = request.GET.get('idChar')
    weapons = Characterweapons.objects.filter(characterid__exact=idchar).values_list('weaponid','categoryid_id')
    charname = Characters.objects.filter(characterid__exact = idchar).values_list('name', flat=True)
    print("charname: ")
    print(charname)
    if weapons[0][1] == 1:
        mh_id = weapons[0][0]
        oh_id = weapons[1][0]
    elif weapons[0][1] == 2:
        oh_id = weapons[0][0]
        mh_id = weapons[1][0]
    mh = Weapons.objects.filter(weaponid__exact=mh_id).values_list('weaponname', flat=True)
    oh = Weapons.objects.filter(weaponid__exact=oh_id).values_list('weaponname', flat=True)


    context="mh": mh, "oh": oh,"idchar": idchar,"charname": charname

    return render(request,'users/character_weapons.html', context)

如果有人知道如何解决它,请告诉我。 提前致谢!

【问题讨论】:

【参考方案1】:

values_list()flat=True 返回值列表,因此您必须提取索引为 0 的值,因为您的查询似乎总是只返回一行:

context="mh": mh[0], "oh": oh[0],"idchar": idchar,"charname": charname[0]

【讨论】:

是的,对不起,我不得不等 10 分钟,呵呵【参考方案2】:

这是一个平面列表,但它仍然是一个列表。如果要一次性输出,请使用|join 过滤器。

 mh|join:"," 

【讨论】:

以上是关于带有 flat=True 的 Values_list 仍然显示括号的主要内容,如果未能解决你的问题,请参考以下文章

django获取某一个字段的列表,values/values_list/flat

flat 和 phong 着色问题

带有 WHERE 子句和 INNER JOIN 的 MySQL 更新查询不起作用

带有雄辩查询的 Laravel 分页

DBGridEh使用指南改变边框颜色

ES6浅谈--数组扩展对象扩展