我不知道我是否以正确的方式这样做。
我有一张表格:
class ConnectSelectMultipleForm(forms.Form):
class Meta:
model = Connect
def __init__(self, *args, **kwargs):
messages = kwargs.pop('messages')
choices = []
if messages:
pass
else:
messages = []
for message in messages:
index = (message.id, {message.sender, message, message.id})
choices.append(index)
super(ConnectSelectMultipleForm, self).__init__(*args, **kwargs)
self.fields['message'] = forms.MultipleChoiceField(choices=choices,
widget=forms.CheckboxSelectMultiple)
从上面可以看出,我正在向模板发送{message.sender, message ,message.id}
。现在我想在模板中访问这些变量。
{% for field in select_form %}
{% for fi in field %}
{{ fi.message }}
{{ fi.message.sender }}
{{ fi.message.id }}
{% endfor %}
{% endfor %}
上面的代码错了。但我们能做类似的事吗?或者有其他方法可以做我想做的事情吗?
提前致谢。
###编辑我通过打印字段得到的输出如下
set([5, u'Everycrave', <Connect: The deal you refered has been bought>])
我想要的是
Id:5,姓名:Everycrave,内容:您提到的交易已被购买
所以我个别想要那些字段
答案 0 :(得分:4)
你根本不想“在场上迭代”。 Django为你做这件事。你唯一的问题是如何为字段的选择创建显示值 - 出于某种原因,当你只想要一个字符串时,你将它们创建为集合。您的__init__
方法应该是这样的:
def __init__(self, *args, **kwargs):
messages = kwargs.pop('messages', None)
super(ConnectSelectMultipleForm, self).__init__(*args, **kwargs)
if messages is None:
messages = []
choices = [(message.id, "%s: %s (%s)" % message.sender, message.text, message.id)
for message in messages]
self.fields['message'].choices = choices
现在您只需以正常方式引用模板中的字段:{{ form.message }}
。