Ошибка значения Send_Mail Django - PullRequest
0 голосов
/ 24 февраля 2012

Я пытаюсь использовать 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.Я уже рассмотрел этот вопрос о переполнении стека , но он мне не очень полезен

Разобрался

После четырех часов возни сКод я наконец получил.

mailing_list = []

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

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012
[{email: u'someonesname@domain.com'}, {email: u'anothername@domain.com'}]

похоже, что вы проверяете этот список:

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

со значениями_списка:

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

и для списка значений со сплошным = Истина:

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

0 голосов
/ 24 февраля 2012

Возможно, есть лучший способ, но вы можете попробовать это:

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)
...