from django import newforms as forms from django.contrib.auth.models import User from django.contrib.sites.models import Site from django.core.mail import send_mail class FormMail(forms.Form): def notify(self): """ Sends an email to all members of the staff with ordered list of fields and values for any form that subclasses FormMail """ site_name = Site.objects.get_current().name form_name = self.__class__.__name__ subject = '%s %s Submission' % (site_name, form_name) user_list = [u for u in User.objects.filter(is_staff=True).exclude(email="").order_by('id')] message = "" for k in self.base_fields.keyOrder: message = message + '%s: %s\n\n' % (self[k].label, self.cleaned_data[k]) send_mail(subject, message, user_list[0], user_list) ## Example form class ContactForm(FormMail): name = forms.CharField() phone = forms.CharField(required=False) email = forms.EmailField() comment = forms.CharField(widget=forms.Textarea()) ## Example view code form = ContactForm(request.POST) if form.is_valid() form.notify()