Python Django-试图与电子邮件为伍

Python Django-试图与电子邮件为伍,python,django,email,Python,Django,Email,目标是使用当前登录的用户关联名称发送电子邮件,如下所示: asoc_name@mail.com 我得到的错误是: 注释“email”与模型上的字段冲突。 我尝试过改变领域和其他解决方案,但运气不佳 非常感谢你们的帮助,伙计们 Django:1.10 Python:3.6 views.py class mailPost(FormView): success_url = '.' form_class = mailHandler template_name = 'post/post

目标是使用当前登录的用户关联名称发送电子邮件,如下所示:

asoc_name@mail.com

我得到的错误是:

注释“email”与模型上的字段冲突。

我尝试过改变领域和其他解决方案,但运气不佳

非常感谢你们的帮助,伙计们

Django:1.10
Python:3.6


views.py

class mailPost(FormView):
   success_url = '.'
   form_class = mailHandler
   template_name = 'post/post.html'

   def form_valid(self, form):
       messages.add_message(self.request, messages.SUCCESS, 'Email Sent!')
       return super(mailPost, self).form_valid(form)

   def form_invalid(self, form):
       messages.add_message(self.request, messages.WARNING,
                         'Email not sent. Please try again.')
       return super(mailPost, self).form_invalid(form)

   def post(self, request, *args, **kwargs):
       form_class = self.get_form_class()
       form = self.get_form(form_class)

       if form.is_valid():
          sender = Association.objects.filter(asoc_name=self.request.user.association).annotate(email=Concat('asoc_name', Value('@mail.com')))
           receiver = form.cleaned_data.get('receiver')
           subject = form.cleaned_data.get('subject')
           message = form.cleaned_data.get('message')
           time = datetime.now()
           asoc_pk = Association.objects.filter(asoc_name=self.request.user.association)
           asoc = Association.objects.get(id=asoc_pk)

           Email.objects.create(
               sender=sender,
               receiver=receiver,
               subject=subject,
               message=message,
               association=asoc,
               sentTime=time
           )

           msg = EmailMultiAlternatives(subject, message, sender, [receiver])
           msg.send()

           return self.form_valid(form)
       else:
           return self.form_invalid(form)

models.py

class Email(models.Model):
   sender = models.CharField(max_length=254)
   sentTime = models.DateTimeField(auto_now_add=True, blank=False)
   subject = models.CharField(max_length=254)
   receiver = models.CharField(max_length=254)
   cc = models.CharField(max_length=254)
   bcc = models.CharField(max_length=254)
   message = models.TextField()
   association = models.ForeignKey(Association)

   class Meta:
       db_table = 'Email'    


class Association(models.Model):
    asoc_name = models.CharField(max_length=50, null=True, blank=True, unique=True)


   class Meta:
       db_table = 'Association'     

这样做有什么意义?这是一个简单的字符串连接,直接在Python中执行会容易得多。@DanielRoseman-我试图获取当前用户所属的关联名称,并将其添加到发件人电子邮件中的
@mail.com
。我不想硬编码协会的名称。请问您对如何按照自己的方式进行操作有什么建议吗?
“{}@mail.com.format(self.request.user.association.assoc_name)
@DanielRoseman-正在运行,非常感谢!!!唯一一件看起来不正确的事情是它用元组显示,比如so
“asoc_name”@mail.com
。。。我只是把它改成这个<代码>“{}”。让我接受你的回答,这是我至少能为你的巨大帮助做的=D@Niknak你的问题解决了,这很酷,但仅供参考,你得到的错误是告诉你不能用模型的现有名称注释新字段,因为电子邮件已经在模型中了
.annotate(email2=Concat('asoc_name',Value('@mail.com'))
应该可以使用