On my website, I've got a "Compose Email" page with three fields - Subject, Recipients, & Body. In my database, I've got this custom user model in 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
I want to create a form to import contacts that includes all of the MyUser
objects. Currently, I've got this in 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()
In my views.py, I've got the following view:
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>
...
And finally, here is the .html file from which I link to import_contact_form.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>
...
When I get to the Import Contacts page, I don't see any form, only a button that says Add. I'd like to have some list of contacts (dropdown would be fantastic). It's possible I have an issue elsewhere (fairly new to Django), but I am led to believe I've done something wrong with the ModelMultipleChoiceField. What do you think?