On Tue, 2009-01-20 at 11:00 -0800, Derek Payton wrote: > The issue is that CLIENT_CHOICES is only evaluated once, when the > server is started an all the code is loaded into memory. Try wrapping > it all in a function, thusly: > > def CLIENT_CHOICES() > choices = [ > ('', 'Select Client'), > ] > clients = CustomerMaster.objects.all().order_by('customer_name') > for client in clients: > choices.extend([(client.id, client.customer_name)]) > return choices > > class CreateForm(forms.Form): > client = forms.ChoiceField(choices=CLIENT_CHOICES()) > > Now, every time the model is loaded, CLIENT_CHOICES() will be called > and you'll get fresh values.
Everything correct, except that "every time" means "exactly once; when the module is imported". You haven't changed anything. The CLIENT_CHOICES() function is called when the form definition is parsed. (Also, the black helicopter briagde will be arriving at your house soon, to talk to you about not naming your function with all capital letters. Please take their advice to heart. We don't like having to send them around twice.) If somebody wants to initialise the choices afresh, each time a form instance is created, you have to do it in __init__. For example: class CreateForm(forms.Form): client = forms.ChoiceField(choices=()) def __init__(self, *args, **kwargs): super(CreateForm, self).__init__(*args, **kwargs) self.fields["client"].choices = CLIENT_CHOICES() The __init__ method on a class is only called when you create an *instance* of the class (not at import time) and it is called every such time. So this sets the "choices" attribute on the "client" field to a fresh value for each instance. Regards, Malcolm --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---