Thank you, Dennis.  I'll study your answer.  I have to do this kind of
thing for a lot of different tables.  And I discovered another thing:  In
the template I was reading the table in again from the database!  Before my
problem was solved, I could populate the selection list from the DB table,
but then there were no valid choices when I got back to the view.

I'm getting to know Django just enough that I can sometimes answer
questions posted here, or at least make suggestions.

Regards

On Fri, Jan 20, 2012 at 11:22 PM, Dennis Lee Bieber
<wlfr...@ix.netcom.com>wrote:

> On Fri, 20 Jan 2012 19:44:16 -0800 (PST), Bill Beal
> <b.b...@eximflow.com> wrote:
>
>        Caveat: I've only looked at Django, but not in enough detail to be
> "expert"; my comments are based upon basic Python syntax/semantics (my
> apologies to the developers, but I work better with printed
> documentation and Django is too much of a moving target for the few
> books that did come out to be relevant four months later)
>
> >name 'scac_choicelist' is not defined at the marked
> >line in my form:
> >
>         Which is true -- it is not defined at that point. (NOTE: your names
> don't really help understanding the purpose of the variables <G>)
>
> >from django import forms
> >from django.forms.fields import ChoiceField
> >from myapp.models import *
> >
> >BOL_CODE_QUALIFIERS = (
> >  ('OB', 'Ocean Bill of Lading (OB)'),
> >  ('BM', 'House Bill of Lading (BM)'),
> >)
> >
> >class BolForm(forms.Form):
> >- scac = forms.ChoiceField(
> >----- label=u'Ocean Carrier',
> >----- choices=scac_choicelist()) ######
> >- bill_of_lading = forms.CharField(
> >----- label=u'Bill of Lading #', max_length=50)
> >- bol_type = forms.ChoiceField(
> >----- label=u'Type of B/L',
> >----- choices=BOL_CODE_QUALIFIERS)
> >
> >Here's my model:
> >
> >from django.db import models
> >
> >class Scac(models.Model):
> >- code = models.CharField(max_length=4)
> >- name = models.CharField(max_length=60)
> >
> >- def __unicode__(self):
> >--- return self.code
> >
> >- def scac_choicelist():
> >--- q = Scac.objects.all()
> >--- scaclist = []
> >--- for x in q:
> >----- scaclist.append((x.code, x.name))
> >----- return scaclist
>
>         Presuming the many "-"s represent indentation, "scac_choicelist" is
> a method of Scac. That means it should have at least one parameter: self
>
>        def scac_choicelist(self):
>                scaclist = []
>                for item in self.objects.all():
>                        scaclist.append((item.code, item.name))
>                return scaclist
>
> NOTE: based on your "-"s, your return statement is inside your loop, so
> you'd be returning after processing only one element.
>
>        NOW... In the form module you need to reference an instance of the
> model! The method itself is not visible.
>
> >- scac = forms.ChoiceField(
> >----- label=u'Ocean Carrier',
> >----- choices=scac_choicelist()) ######
> >
>
> Something like:
>
>        scac = forms.ChoiceField(       label=u"Ocean Carrier",
>
>  choices=Scac().scac_choicelist())
>
> --
>        Wulfraed                 Dennis Lee Bieber         AF6VN
>        wlfr...@ix.netcom.com    HTTP://wlfraed.home.netcom.com/
>
> --
> 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
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>

-- 
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 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to