2012-02-23 2 views
0

Я изо всех сил, чтобы использовать QuerySet как arguement получателя для send_mail функцииДжанго 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'[email protected]'}, {email: u'[email protected]'}] 

Любые идеи ? Спасибо

PS. Я посмотрел на this stackoverflow question уже, но это не очень полезно для меня

Фигурные It Out

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

mailing_list = [] 

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

Это может работать в одном шаге, но это не тестировалось: 'mailing_list = Customer.objects.filter (group__name = 'group_two') .values_list ('email', flat = True) ' – Furbeenator

ответ

0

Там может быть лучше, но вы можете попробовать это:

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

send_mail('<Subject>', '<Message>', '[email protected]', list, fail_silently=False) 
+0

Спасибо, но это дает мне объект« списка »не вызываемый» ошибка – dannymilsom

+0

А, возникает ошибка при вызове 'list()' с 'Customer.objects ... «Оставьте эту часть отредактированной, и она должна работать, но я вижу, вы уже поняли это. :-) – Furbeenator

0
[{email: u'[email protected]'}, {email: u'[email protected]'}] 

это выглядит, как вы отметите этот список:

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

с values_list:

list(Customer.objects.filter(group__name='group_two').values_list('email')) 
... 
[(u'[email protected]',), (u'[email protected]',)] 

и values_list с плоским = True:

list(Customer.objects.filter(group__name='group_two').values_list('email', flat=True)) 
... 
[u'[email protected]', u'[email protected]'] 

проверка документации https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values_list

Смежные вопросы