这就是我想要的(警告:Python noob在这里,这可能是一种不正确的代表方式,但我希望你得到我想要的东西)
forms = {
{ 'id' : '1',
'form' : form_something,
},
{ 'id' : '4',
'form' : form_something2,
}
}
现在我的问题是我如何在我的django视图中创建这个字典,就像这样,到目前为止 - >
links = Links.objects.all()
forms = {}
for link in links:
form = LinkForm(instance = link )
forms.update({ 'id' : link.id, 'form' : form})
# which is obviously the wrong way to do it
答案 0 :(得分:2)
这将创建一个词典列表:
links = Links.objects.all()
forms = []
for link in links:
form = LinkForm(instance = link)
forms.append({'id': link.id, 'form': form})
如果要创建字典字典,则必须有密钥:
links = Links.objects.all()
forms = {}
for link in links:
form = LinkForm(instance = link)
# you need something to use as a key
forms[key] = {'id': link.id, 'form': form}
请注意,我更改了代码中的空格以匹配标准Python方式,但这并不重要。
嵌套字典的形式为:
forms = {
'key1': { 'id' : '1',
'form' : form_something,
},
'key2': { 'id' : '4',
'form' : form_something2
}
}
我在form_something2
之后添加了密钥并删除了逗号。
答案 1 :(得分:1)
我从未使用过django,但在纯python中,它会像(你想要一个表单列表/元组,而不是表单字典):
links = Links.objects.all()
forms = []
for link in links:
form = LinkForm(instance = link)
# the comma tells python to treat the contents inside the ( ) as a list
forms.append({ 'id' : link.id, 'form' : form })
修改强>
根据评论中的讨论,与性能方面的元组相比,列表是更好的选择。编辑上面的代码以反映这一变化。
答案 2 :(得分:0)
我认为你想做的事情是这样的:
forms = { '1': form_something,
'4':form_something2,
}
通过这种方式,您可以查找带有ID的表单(这是查找内容的常用方法)
你可以这样做:
forms = {}
for link in Links.objects.all():
form = LinkForm(instance = link )
forms[form.id] = form`
现在我很好奇为什么要在字典中保存表单?对我来说似乎很奇怪。
希望这有帮助