如何加入django模型对象响应

时间:2015-12-01 18:31:17

标签: python django

我有这个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调用的版本可以执行我正在寻找的内容而无需手动迭代我的对象?

感谢。

2 个答案:

答案 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])