基本的にはジョブチケットのモデルフォームを持っています。ビューのsaveメソッドは、保存時に電子メール通知を送信するように設定されています。モデルには、親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」はキーエラーをスローし、これらの電子メール受信者を適切に渡す方法がわかりません。