如何仅从django modelform获取文本字段数据以提交电子邮件?

如何仅从django modelform获取文本字段数据以提交电子邮件?,django,forms,python-3.x,email,Django,Forms,Python 3.x,Email,如何仅从django modelform获取文本字段数据以提交电子邮件?我在视图中尝试了很多变化,清理了数据。get()def clean(self):方法等等。不知道为什么这么难 # models.py - service model class Service(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) created_at = mode

如何仅从django modelform获取文本字段数据以提交电子邮件?我在视图中尝试了很多变化,清理了数据。get()def clean(self):方法等等。不知道为什么这么难

# 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 = ['mytestemail@gmail.com', 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>
#models.py-服务模型
班级服务(models.Model):
user=models.ForeignKey(settings.AUTH\u user\u MODEL,on\u delete=models.CASCADE)
已创建\u at=models.DateTimeField(自动\u now\u add=True)
服务类型=models.ManyToManyField('ServiceType')
description=models.TextField(空白=True)
定义(自我):
返回“服务订单:{user}”。格式(user=self.user)
类ServiceType(models.Model):
label=models.CharField(最大长度=200,唯一性=True)
定义(自我):
返回自我标签
#forms.py
类NewServiceForm(forms.ModelForm):
accept_tos=forms.BooleanField(必需=True)
类元:
型号=服务
字段='\uuuu所有\uuuu'
排除=('user','created_at',)
#views.py
@需要登录
def新闻服务(请求):
如果request.method==“POST”:
表单=新闻服务表单(request.POST)
如果form.is_有效():
form.instance.user=request.user
service=form.save()
#发送电子邮件-将项目/服务模型数据的副本发送给用户和站点所有者
name=request.user.first\u name+request.user.last\u name
username=request.user.username
主题='新服务订单'
from_email=request.user.email
服务数据=表单数据
消息=''来自:{}{}{}
\n{}
\n{}
''。格式(名称、来自电子邮件、用户名、主题、服务数据)
收件人=['mytestemail@gmail.com,request.user.email]
尝试:
发送邮件(主题、邮件、发件人、收件人)
除BadHeaderError外:
返回HttpResponse('找到无效标头')
#结束电子邮件
消息。警告(请求“成功!您的服务订单已提交”。)
返回重定向('项目')
其他:
消息。错误(请求“无效提交,请检查并重试”。)
其他:
form=NewServiceForm()
返回呈现(请求'dashboard/newservice.html',{'form':form})
#newservice.html
{%csrf_令牌%}
服务类型
{{form.Service_Type}}

{{form.accept_tos}}

说明{form.Description}}

提交
我收到错误的输出发送到我的电子邮件收件箱如下:我只想文本输出的选择,并说明发送到我的电子邮件收件箱(而不是布尔=真),即“编辑内容添加内容测试说明到这里”

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

{'service_type':在m2m表单字段数据检索出现大量问题后,我使用project=form.save()对象从创建的模型中提取数据。虽然有很多冲突,但解决方法更简单。

在m2m表单字段数据检索出现大量问题后,我使用project=form.save()从创建的模型中提取数据反对。有很多冲突,但解决起来比较容易。

请发布
模板
code请发布
模板
代码