2010-10-21 14 views
2

une autre question Django send_mail. On dirait que j'ai des problèmes d'affichage des données dans un courriel qui sépare la forme de la fonction. On dirait que c'est un problème variable.Utilisation de send_mail dans Django: Impossible d'afficher les données dans la facture à partir des fonctions

Modifier: Je parviens à faire apparaître le nom du client! Maintenant, comment peut faire la même chose avec facture. Dire que je voulais afficher la date, facture_no, work_orders & contrat_info?

#models.py 
    class Invoice(models.Model): 
    client = models.ForeignKey(Client) 
    date = models.DateField() 
    invoice_no = models.CharField(max_length=16) 
    work_orders = models.ManyToManyField(Work_Order) 
    contract_info = models.ForeignKey(Contract_Info) 

    def __unicode__(self): 
       return self.invoice_no 

    #views.py 
    @login_required 
    def invoice_mail(request, id=1): 
     invoices_list = Invoice.objects.filter(pk=id) 
     client = invoices_list[0].client 
     t = loader.get_template('registration/email.txt') 
     c = Context({ 
     'client': client.company, 
     }) 
     send_mail('Welcome to My Project', t.render(c), '[email protected]', ['[email protected]'], fail_silently=False) 
     return render_to_response('email.html', locals(), context_instance=RequestContext(request)) 

Voici mon email.txt

Dear {{client}}, 

Et quand je l'envoie à mon compte e-mail que je reçois ce

Cher Currys,

Répondre

5

Cela n'a rien à voir avec send_mail . Vous envoyez ceci à votre contexte de modèle »

c = Context({ 
    'invoice': 'invoice.client', 
    }) 

Voici la facture 'est une chaîne contenant le texte « invoice.client ». Vous devez envoyer un objet réel. Toutefois, votre désignation ne sait pas, donc je peux » t dire si vous voulez envoyer l'objet de facture, ou le client lié

+0

Je veux voir tout ce qu'il y a dans les données {{invoice.client}} pour pouvoir être affiché dans l'e-mail – Shehzad009

+1

Alors, envoyez 'invoice.client' plutôt que '' invoice.client''. –

+0

Je reçois une erreur "nom global 'facture' n'est pas défini". Je crois que la facture dont ils parlent est dans invoice.client. Pas 'facture' – Shehzad009

1

Comme Daniel a déjà souligné

c = Context({ 
    'client': 'client.company', 
}) 

doit être:..

c = Context({ 
    'client': client.company, 
}) 

Lorsque vous enveloppez quelque chose dans '', il devient une chaîne, pas l'objet vers lequel il pointait.

+0

Oups. en fait que juste une faute de frappe. J'ai résolu ce problème mais je suppose que je n'ai pas mis à jour correctement. Je le fais maintenant. – Shehzad009