1
oldHref = c.common.externalLinks.all()
newHref = m.common.externalLinks.all()
m.common.externalLinks = list(chain(oldHref,newHref))

这可以编译并正常工作。

但我想做的是

for x in oldHref:
    if ... :
        m.common.externalLinks = list(chain(newHref, x))

这不编译。

只是为了让您了解它们的类型:

m.common.externalLinks.all() =  [<List: List object>] #same as newHref
x =  List object
4

1 回答 1

1

目前尚不清楚您要做什么,但我认为您正在尝试合并两个查询集。

如果是这种情况,您可以使用:

c.common.externalLinks.all() | m.common.externalLinks.all()

另一种方法可能是使用:

ExternalLink.objects.filter(common__in=[m.common, c.common])

但这将取决于其余代码的外观。

关于 python 风格的旁白:尝试使用snake_case而不是camelCase.

好的,这不是您想要的联合:也许您想将所有值添加到m.common.externalLinks.all()into c.common.externalLinks

c.common.externalLinks.add(*m.common.externalLinks.all())

或者,如果您只想要第一个:

c.common.externalLinks.add(m.common.externalLinks.all()[0])
于 2013-08-04T04:49:42.510 回答