也许标题令人困惑,但这是我的问题。
我遍历了带有嵌套for循环的django模型对象,如下所示。最后,我要有一个具有唯一键值对的字典。
下面的代码有效,但我不认为它真的有效。
settings = []
for feature in features:
for setting in feature.settings.all():
settings.append({"name": setting.name, "active": setting.active})
return [dict(t) for t in {tuple(setting.items()) for setting in settings}]
所以在返回之前,我有这样的事情:
[{'name': 'x', 'active': False}, {'name': 'y', 'active': True}, {'name': 'x', 'active': False}]
但是当我返回时,我会删除列表中的重复项并返回到下面。
[{'name': 'x', 'active': False}, {'name': 'y', 'active': True}]
答案 0 :(得分:1)
如果您使用的是Postgres,则可以将distinct和fields属性一起使用,然后使用值来获得所需的设置,
您的代码将等效于:
select id, somevalue,
(select sum(increment) from increments i1 where i1.id <= i2.id)
from increments i2
答案 1 :(得分:0)
如果这就是您的意思,您可以使用字典理解。
print({setting.name : setting.active for feature in features for setting in feature.settings.all()})
如果行太长,可以使用类似这样的东西。
print({
setting.name : setting.active
for feature in features
for setting in feature.settings.all()
})