我正在努力使用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)
答案 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']