On Fri, 2009-07-31 at 16:31 -0700, mviamari wrote: > Hello, > > I'm trying to make a form for data entry into my database that uses > ChoiceFields for foreign keys. Obviously, the ideal choice would be > ModelChoiceField, however I'm not using the django ORM, so I've > assumed that's not going to work (I'm using Elixir/SQLAlchemy). > > I originally set the choices parameter in the ChoiceField declaration > to be derived from a query result from SQLAlchemy (returned as an > array of tuples). The problem is that the choices don't update when > the database changes. They are fixed to whatever was present when the > server is initialized (or at least it appears to be).
If you have specified the choices field as a parameter to a Field subclass in a Form class, then it will be evaluated whenever that Form class is parsed (probably at import time). That's normal Python behaviour. > I'm looking for suggestions/advice on to get the ChoiceField choices > to update when the form is the used. "Used" is probably a bit ambiguous here. It's probably easier to think in terms of "when an instance of the form class is created." The solution is to update the choices attribute on the appropriate field in the Form subclass's __init__() method. For example class MyForm(forms.Form): options = forms.ChoiceField() def __init__(self, *args, **kwargs): super(MyForm, self).__init__(*args, **kwargs) choices = ... # <-- create a sequence of 2-tuples self.fields["options"].choices = choices You can do whatever you like to populate the "choices" variable in the above fragment. The only requirement is that you end up with a sequence of pairs which are the submitted form value and the human readable text for the form element. 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 -~----------~----~----~----~------~----~------~--~---