如何将一个对象添加到queryset

时间:2013-08-04 04:45:04

标签: python django django-queryset

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

1 个答案:

答案 0 :(得分: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()中的所有值添加到c.common.externalLinks

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

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

c.common.externalLinks.add(m.common.externalLinks.all()[0])