Python 在django电子邮件中包含保存的用户数据

Python 在django电子邮件中包含保存的用户数据,python,django,email,django-models,Python,Django,Email,Django Models,我已经创建了一个脚本,允许我向每个用户发送电子邮件。我试图在邮件中包含一个术语列表,作为文本输出保存给每个特定用户。我已经设法获得了所有对象的标题,但我真的希望获得名为“saved_Searchs”的文本字段中的条目,并且只针对该特定用户 以下是相关模型: class Terms(models.Model): user = models.ForeignKey(User) saved_searches = models.TextField() 下面是我正在编写的脚本: #!/us

我已经创建了一个脚本,允许我向每个用户发送电子邮件。我试图在邮件中包含一个术语列表,作为文本输出保存给每个特定用户。我已经设法获得了所有对象的标题,但我真的希望获得名为“saved_Searchs”的文本字段中的条目,并且只针对该特定用户

以下是相关模型:

class Terms(models.Model):
    user = models.ForeignKey(User)
    saved_searches = models.TextField()
下面是我正在编写的脚本:

#!/usr/bin/env python
from django.core.management.base import NoArgsCommand, CommandError
from django.contrib.auth.models import User
from app.models import Terms
from django.core.mail import EmailMessage
from django.db import connection

class Command(NoArgsCommand):
    help = 'Sends emails'

    def handle_noargs(self,**options):
        try:
            self.send_email_alerts()
        except Exception, e:
            print e
        finally:
            connection.close()

    def send_email_alerts(self):
        for user in User.objects.all():
            subject = 'Alerts'
            from_email="Support <support@email.com>"
            terms = Terms.objects.all()
            text = 'Hi %s, here are your alerts: %s.' % (user.username, terms)

            self.stdout.write("logging here")
            msg = EmailMessage(subject, text, from_email, [user.email])
            msg.send()

        self.stdout.write("sending complete")
#/usr/bin/env python
从django.core.management.base导入NoArgsCommand命令,CommandError
从django.contrib.auth.models导入用户
从app.models导入术语
从django.core.mail导入EmailMessage
从django.db导入连接
类命令(NoArgsCommand):
帮助='发送电子邮件'
def手柄(自身,**选项):
尝试:
self.send_email_alerts()
除例外情况外,e:
打印e
最后:
连接。关闭()
def发送电子邮件提醒(自我):
对于user.objects.all()中的用户:
主题='Alerts'
来自\u email=“支持”
terms=terms.objects.all()
text='您好%s,以下是您的通知:%s.%。%(user.username,terms)
self.stdout.write(“在此处登录”)
msg=EmailMessage(主题、文本、来自电子邮件[user.email])
msg.send()
self.stdout.write(“发送完成”)

您没有按循环的当前用户筛选术语。 此外,如果您只需要
保存的搜索
请使用带有选项flat=True的值列表方法

terms = user.terms_set.values_list('saved_searches', flat=True)

对于propper格式,在添加到字符串模板之前,应加入术语:

text = 'Hi %s, here are your alerts: %s.' % (user.username, ', '.join(terms))

您是要将属于特定用户的术语发送给每个用户,还是要将数据库中的所有术语发送给每个用户?我想您正在查找类似的内容:terms=terms.objects.all().filter(user=user).values(saved_searches)我正在尝试发送属于该特定用户的术语。我是这样想的,但我得到了答案“saved_searches”在我使用时未定义。我假设saved_searches是您模型中的一个字段,请使用“users_terms”或您在terms模型中定义的任何字段
text = 'Hi %s, here are your alerts: %s.' % (user.username, ', '.join(terms))