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'}
posten Sie bitte den 'template' Code –