2017-06-03 1 views
1

Wie erhalte ich nur die Textfelddaten aus einem Django-Modell für die E-Mail-Übermittlung? Ich habe eine Menge Variationen in der Ansicht ausprobiert, cleaned_data.get() def clean (self): Methoden etc. Nicht sicher, warum das so schwer ist.Wie erhalte ich nur Textfelddaten aus dem Django-Modell für die E-Mail-Übermittlung?

# models.py - service model 
class Service(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 
    created_at = models.DateTimeField(auto_now_add=True) 

    service_type = models.ManyToManyField('ServiceType') 
    description = models.TextField(blank=True) 

    def __str__(self): 
     return "Service Order for: {user}".format(user=self.user) 


class ServiceType(models.Model): 
    label = models.CharField(max_length=200, unique=True) 

    def __str__(self): 
     return self.label 

# forms.py 
class NewServiceForm(forms.ModelForm): 
    accept_tos = forms.BooleanField(required=True) 

    class Meta: 
     model = Service 
     fields = '__all__' 
     exclude = ('user', 'created_at',) 

# views.py 
@login_required 
def newservice(request): 
    if request.method == 'POST': 
     form = NewServiceForm(request.POST) 
     if form.is_valid(): 
      form.instance.user = request.user 
      service = form.save() 

# SEND EMAIL - send copy of project/service modelform data to user and site owner 

      name = request.user.first_name+request.user.last_name 
      username = request.user.username 
      subject = 'New Service Order' 
      from_email = request.user.email 
      service_data = form.cleaned_data 
      message = ''' From: {} {} {} 
      \n {} 
      \n {} 
      '''.format(name, from_email, username, subject, service_data) 
      recipients = ['[email protected]', request.user.email] 
      try: 
       send_mail(subject, message, from_email, recipients) 
      except BadHeaderError: 
       return HttpResponse('Invalid header found.') 
# END EMAIL 
      messages.warning(request, 'Success! Your service order has been submitted.') 
      return redirect('projects') 

     else: 
      messages.error(request, 'Invalid submission, check and try again.') 
    else: 
     form = NewServiceForm() 

    return render(request, 'dashboard/newservice.html', {'form': form}) 

# newservice.html 

<form method="post" id="newprojectform">   
      {% csrf_token %} 

     Service Type <br> {{ form.service_type }} <br><br> 
        {{ form.accept_tos }} <br><br> 
     Description {{ form.description }} <br><br> 
     <button class="btn btn-sm" type="submit">Submit</button> 
       </div> 
</form> 

Im falschen Ausgabe an meinen E-Mail-Posteingang unten geschickt bekommen: Ich habe die Textausgabe von Entscheidungen will, und Beschreibung Inhalt Test Beschreibung geht verschickt an meinem E-Mail-Posteingang (und nicht boolean = True), dh ‚Bearbeiten Inhalt hinzufügen hier‘

{'service_type': <QuerySet [<ServiceType: Edit Content>, <ServiceType: Add Content>, 'accept_tos': True, 'description': 'Test Description goes here'} 
+0

posten Sie bitte den 'template' Code –

Antwort

0

nach vielen Problemen mit Felddatenabfrage m2m Form zog ich Daten aus der erstellten Modell-Projekt = form.save() Objekt. viel Streit, aber etwas leichtere Lösung.

Verwandte Themen