Django ModelMultipleChoiceField表单

时间:2017-12-10 05:38:53

标签: django django-forms modelchoicefield

在我的网站上,我有一个"撰写电子邮件"包含三个字段的页面 - 主题,收件人和&身体。在我的数据库中,我在 models.py 中获得了此自定义用户模型:

class MyUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    school = models.CharField(max_length=100)

    def __unicode__(self):
        return self.user

我想创建一个表单来导入包含所有MyUser个对象的联系人。目前,我已经在 forms.py

中获得了此功能
class ContactForm(forms.Form):
    contacts = forms.ModelMultipleChoiceField(widget=forms.Select(attrs={'size':'13', 'onchange':'this.form.action=this.form.submit()'}), queryset=MyUser.objects.all().order_by('user'))#, empty_label=None)

    def __init__(self, *args, **kwargs):
        super(ContactForm, self).__init__(*args, **kwargs)
        self.fields['contacts'].queryset = MyUser.objects.all()

在我的 views.py 中,我有以下观点:

def import_contacts(request):
    contact_form = ContactForm()
    if request.method == "POST":
        contact_form = ContactForm(request.POST)
        if contact_form.is_valid:
            # send data to be processed
            return render(request, 'compose_email.html', {
                'form': contact_form,
            })
    errors = contact_form.errors or None  # form not submitted or it has errors
    return render(request, 'apple/contact_import_form.html', {
        'form': contact_form,
        'errors': errors,
    })

contact_import_form.html

...
<div class="form-panel">
  <form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <div id="sub">
      <button type="submit" class="button">Add</button>
    </div>
  </form>
</div>
...

最后,这是我链接到import_contact_form.html的.html文件 的 compose_email.html

...
<a class="emailButton" id="b1" href="/gordie/home/templates/">Import Template</a>
<a class="emailButton" id="b2" href="/home/send_email/import_contacts/">Import Contacts</a>
  <!-- <button class="emailButton" id='b2'>Import Contacts</button> -->
  <div class="form-panel">
    <form method="post">
      {% csrf_token %}
      {{ form.as_p }}
      <div id="sub">
        <button type="submit" class="button">Send</button>
      </div>
    </form>
  </div>
...

当我进入“导入联系人”页面时,我看不到任何表单,只有一个显示“添加”的按钮。我想要一些联系人列表(下拉列表会非常棒)。我可能在其他地方有一个问题(Django相当新),但我被引导相信我已经对ModelMultipleChoiceField做错了。你觉得怎么样?

0 个答案:

没有答案