1
如何从django模型中获取文本字段数据以提交电子邮件?我在视图中尝试了很多变体,其中clean_data.get()def clean(self):方法等等。不知道为什么这么难。如何从django modelform获取文本字段数据以提交电子邮件?
# 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>
即时得到错误的输出发送到我下面的电子邮件收件箱:我只是想选择文本输出,并说明发送到我的电子邮件收件箱中(而不是布尔= TRUE),即“编辑内容添加内容测试说明去这里的
{'service_type': <QuerySet [<ServiceType: Edit Content>, <ServiceType: Add Content>, 'accept_tos': True, 'description': 'Test Description goes here'}
请将'template'代码 –