Django Send_Mail值错误

时间:2012-02-23 20:43:10

标签: django email model django-queryset

我正在努力使用QuerySet作为send_mail函数的接收者争论

我有这个型号:

class Group(models.Model):
  name = models.CharField(primary_key=True)
  mailing_list = models.ManyToManyField("Customer", null=True)  

class Customer(models.Model):
  name = models.CharField()
  email = models.EmailField(primary_key=True)

我想通过电子邮件发送特定群组的mailing_list。我可以通过

访问它
mailList = list(Customer.objects.filter(group__name='group_two').values_list('email'))

但是当我将mailList放入send_mail函数时,我得到了一个

Value Error: need more than 1 value to unpack

当我查看mailList变量时,它看起来像

[{email: u'someonesname@domain.com'}, {email: u'anothername@domain.com'}]

有什么想法吗?谢谢

PS。我已经查看了this stackoverflow question,但它对我没什么帮助

想出来

经过四个小时的代码搞砸后,我终于明白了。

mailing_list = []

for contact in Customer.objects.filter(group__name='group_two'):
  mailing_list.append(contact.email)

2 个答案:

答案 0 :(得分:0)

可能有更好的方法,但你可以试试这个:

list = []
for customer in Customer.objects.filter(group__name='group_two').values_list('email'):
    list.append(customer.email)

send_mail('<Subject>', '<Message>', 'from@example.com', list, fail_silently=False)

答案 1 :(得分:0)

[{email: u'someonesname@domain.com'}, {email: u'anothername@domain.com'}]

看起来您查看此列表:

list(Customer.objects.filter(group__name='group_two').values('email'))

with values_list:

list(Customer.objects.filter(group__name='group_two').values_list('email'))
...
[(u'someonesname@domain.com',), (u'anothername@domain.com',)]

和对于具有flat = True的值_list:

list(Customer.objects.filter(group__name='group_two').values_list('email', flat=True))
...
[u'someonesname@domain.com', u'anothername@domain.com']

检查文档 https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values_list