带有 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