You are having trouble because the form does not contain a Manager object, it contains the primary key of a related Manager object.
try this: m = Manager.objects.get(pk=form['manager']) send_mail( 'Software Request', message, sender, m.email) -richard On 4/28/08, morfeus <[EMAIL PROTECTED]> wrote: > > I am new to django and python, so forgive me if I make incorrect > references. I've been trying for days to find a solution. I will try > to give all the necessary details. > > The general problem: > Accessing an attribute value of a foreign object through the form. > > What I have: > A form that gathers information and upon submission adds a record to > the database and sends out an email. I am creating the form with > form_for_model. A basic version of the model is: > > class Software_request(models.Model): > manager = models.ForeignKey(Manager) > fname = models.CharField("First name", max_length=15) > lname = models.CharField("Last name", max_length=15) > email = models.EmailField() > software = models.CharField(max_length=50) > > class Admin: > list_display = ('lname', 'fname', 'software', 'manager') > list_filter = [''manager'] > search_fields = ['software'] > > def __unicode__(self): > return '%s, %s' % (self.lname, self.fname) > > In addition, you will notice the manager is a ForeignKey to this: > class Manager(models.Model): > fname = models.CharField("First name", max_length=15) > lname = models.CharField("Last name", max_length=15) > email = models.EmailField() > > class Admin: > pass > > def __unicode__(self): > return'%s, %s' % (self.lname, self.fname) > > And of course my view looks like this: > > from django.http import HttpResponseRedirect, HttpResponse > from django.shortcuts import render_to_response > from django.template import Context, loader > from django.core.mail import send_mail > from forms import RequestForm > > def sw_request(request): > if request.method == 'POST': > form = RequestForm(request.POST) > if form.is_valid(): > sender = form.cleaned_data['email'] > # message = form['manager'] > message = form.cleaned_data['manager'] > send_mail( > 'Software Request', message, > sender, ['[EMAIL PROTECTED]'] > ) > form.save() > return HttpResponseRedirect('/sw_request/thanks/') > else: > form = RequestForm() > return render_to_response('test2/sw_request.html', {'form': form}) > > def thanks(request): > return render_to_response('test2/thanks.html') > > You can see I have a line commented out in the view. I have been > playing around with various ways of trying to get at the data. Once I > figure it out, I will be using the manager's email as a recipient > address. That's the only thing I cannot seem to get. > > What I have noticed: > -The manager value in POST (when submitting the data) is the id number > of the respective manager record. This makes sense because the > software_request uses the id as the foreign key. > -The drop down field in the form for managers, displays the unicode > value of 'lastname, firstname' as expected(populated of course with > all the values in the table). > > I have tried to set a variable to capture the manager's email but > cannot. I have tried various things (laugh as necessary) like: > mgr = form.manger.email > mgr = form.manager.get('email') > Usually the error page tells me that the 'manager' attribute does not > exist. > > Is what I am attempting even possible? It seems very simple but no > matter what I try I'm not doing it right. Thanks to anyone who can > understand and help. > > PS- ask as many additional questions if you want. I'll be working on > this all day...again :-\ > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---