如何获取选择字段值而不是表单中的键?
我有一个表单,我让用户为公司选择一些用户的电子邮件.例如,我有一个这样的形式(模型形式的原因是它在一个formset中 - 但这对于现在来说并不重要):
class Contacts(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(Contacts, self).__init__(*args, **kwargs)
self.company = kwargs['initial']['company']
self.fields['emails'].choices = self.company.emails
# This produces stuff like:
# [(1, 'email@email.com'), ...]
emails = forms.MultipleChoiceField(required=False)
class Meta:
model = Company
Run Code Online (Sandbox Code Playgroud)
我想在视图中获取所有选定电子邮件的列表,如下所示:
form = ContactsForm(request.POST)
if form.is_valid():
form.cleaned_data['emails'][0] # produces 1 and not email
Run Code Online (Sandbox Code Playgroud)
没有任何get_emails_display()方法,例如在模型中.此外,一个建议form.fields['emails'].choices不起作用,因为它提供了所有选择,而我需要类似的东西form.fields['emails'].selected_choices?
任何想法,或者让我知道它是否不清楚.
好的,希望这更接近你想要的.
emails = filter(lambda t: t[0] in form.cleaned_data['emails'], form.fields['emails'].choices)
Run Code Online (Sandbox Code Playgroud)
这应该会为您提供所需的选定列表.
| 归档时间: |
|
| 查看次数: |
4738 次 |
| 最近记录: |