我有这个Django / Python调用:
Stuff = Source.object.value_list(dbtype, host)
我想要做的是创建这个字符串:
`"mssql@12.12.12.12, MySQL@23.23.23.23"`
我试图进行一次加入:",".join(Stuff.dbtype + " " + Stuff.host)
并且失败了。
是否有join
调用的版本可以执行我正在寻找的内容而无需手动迭代我的对象?
感谢。
答案 0 :(得分:1)
您应该使用values
代替values_list
:
stuff = Source.objects.values('dbtype', 'host')
然后:
stuffs = [i['dbtype'] + '@' + i['host'] for i in stuff]
result = ', '.join(stuffs)
或:
def compose(stuff):
return stuff['dbtype'] + '@' + stuff['host']
temp = map(compose, stuffs)
result = reduce(lambda x, y: x + ', ' + y, temp)
答案 1 :(得分:0)
首先,values_list返回元组列表,因此您无法编写Stuff.dbtype。
其次,str.join将可迭代对象作为参数,如list。
所以你可以像这样重写你的代码:
Stuff = Source.object.values_list(dbtype, host)
result = ', '.join([dbtype + '@' + host for dbtype, host in Stuff])