0

我有一个基本上是工作票的模型表格。视图中的保存方法设置为在保存时发送电子邮件通知。该模型有几个继承自父 UserProfile 模型的字段:

class RemoteRequest(models.Model):
    create_date = models.DateTimeField(auto_now_add=True)
    requested_by = models.ForeignKey(UserProfile)
    client = models.CharField(max_length=50, choices=CLIENT_CHOICES)
    job_number = models.CharField(max_length=8, unique=False, blank=False, null=False)
    cell_number = models.CharField(max_length=4, unique=False, blank=True, null=True)
    job_name = models.CharField(max_length=200, unique=False, blank=True, null=True)
    print_request = models.ManyToManyField(PrintRequest, unique=False, blank=True, null=True)
    interactive_request = models.ManyToManyField(InteractiveRequest, unique=False, blank=True, null=True)
    due_date = models.DateTimeField(auto_now_add=False)
    job_notes = models.TextField(max_length=500, unique=False, blank=True, null=True)
    asset_location = models.CharField(max_length=300, unique=False, blank=True, null=True)
    asset_upload = models.FileField(upload_to=request_file_name, blank=True, null=True, max_length=300)
    pdf_upload = models.FileField(upload_to=request_file_name, blank=True, null=True, max_length=300)
    *notify_internal = models.ManyToManyField(UserProfile, related_name='+', unique=False, blank=True, null=True)*
    notify_external = models.ManyToManyField(FreelanceProfile, unique=False, blank=True, null=True)
    completed_by = models.ForeignKey(UserProfile, related_name='+', blank=True, null=True)
    complete_date = models.DateTimeField(auto_now_add=False, blank=True)
    asset_return = models.FileField(upload_to=return_file_name, blank=True, null=True, max_length=300)
    pdf_return = models.FileField(upload_to=return_file_name, blank=True, null=True, max_length=300)
    return_notes = models.TextField(max_length=500, unique=False, blank=True, null=True)

    def __unicode__ (self):
            return u'%s %s %s %s %s' % (self.client, self.job_number, '-', self.cell_number, self.job_name) 

UserProfile 模型有一个电子邮件字段。这是我试图传递给视图中的收件人列表的内容:

def remote_request(request):
    if request.method=='POST':
        form = RemoteRequestForm(request.POST)
        if form.is_valid():
                name = form.cleaned_data['job_name']
                subject = form.cleaned_data['job_name']
                message = form.cleaned_data['job_notes']
                sender = form.cleaned_data['requested_by']

                recipients = [form.cleaned_data['**notify_internal.userprofile.email**']]

                from django.core.mail import send_mail
                send_mail(subject, message, sender, recipients)
                remoterq = form.save(commit=False)
                remoterq.save()
                form.save_m2m()
                return render(request, 'remote_tmps/remoterequest.html', {'form': form,
            })
    else:
            form = RemoteRequestForm()
            return render(request, 'remote_tmps/remoterequest.html', {'form': form,})

不幸的是,“notify_internal.userprofile.email”引发了一个关键错误,我不知道如何正确传递这些电子邮件收件人。

4

1 回答 1

0

是什么让您认为使用 python 点符号传递字符串会在字典查找中做一些特别的事情?

您正在保存对象,因此只需在保存后拉取收件人,然后保存 m2m()。

recipients = [user.email for user in remoterq.notify_internal.all()]

查看ManyToManyField文档以了解如何获取数据。QuerySet在 field 属性中公开了一个接口。

于 2012-12-06T03:42:20.863 回答