在我的网站上,我有一个"撰写电子邮件"包含三个字段的页面 - 主题,收件人和&身体。在我的数据库中,我在 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做错了。你觉得怎么样?