On Thu, Sep 11, 2008 at 12:39 AM, adam <[EMAIL PROTECTED]> wrote: > > Hi everyone, > > So I have a problem here. I have a series of forms to allow someone > to create recipes, and I decided to build them with Django's form > objects. The issue is that newly saved data doesn't appear as an > option on another form that I bring in as part of a ChoiceField. An > example that I will provide relevant code for is someone fills out a > form to add a new IngredientType. They save and all is well (it goes > in the DB and everything). However, when I go to the Ingredient form > which has all IngredientTypes in a dropdown, the new type isn't listed > (although old ones are). The data doesn't appear until I restart my > development server. > > Here's the relevant code: > > From forms.py: > > class IngredientForm(forms.Form): > title = forms.CharField(max_length=50, > widget=forms.TextInput(attrs=attrs_dict), > label=_(u'Ingredient Name')) > type = forms.ChoiceField(choices=chain([('', > 'Type')],IngredientType.objects.values_list('id', 'type')), > label=_(u'Ingredient Type')) > [snip]
You've set the choices for the type field in the declaration of the Form itself, this code only gets executed once when the containing file is loaded. You need to move the setting of choices to a place where it will be evaluated each time a new form instance is created, such as the form's __init__ method. For an example look here: http://www.pointy-stick.com/blog/2008/01/06/django-tip-complex-forms/ (That covers more than you're looking for here, I think, but does include an example of how choices can be set in __init__) Karen --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---