2012-12-06 179 views
0

我有一個基本上是工作票的模型表單。視圖中的保存方法設置爲在保存時發送電子郵件通知。該模型有幾個字段從父UserProfile模型繼承:django發送郵件收件人列表

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」拋出了一個關鍵的錯誤,我在一個不知如何正確地傳遞這些電子郵件收件人。

回答

0

是什麼讓你認爲傳遞一個字符串與Python點符號會做一些特殊的字典查找?

您正在保存您的對象,因此在保存m2m()後,只需拉動收件人即可。

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

看看ManyToManyField文檔,看看如何獲​​取數據。在field屬性中顯示了一個QuerySet接口。

相關問題