oops! missing the filter_string arg in __init__. After I added that, I get:
ValueError .....too many values to unpack On May 11, 4:27 pm, adrian <adrian...@gmail.com> wrote: > I tried in the view: > > filter_string = "delivery_time__lte=time_avail_hours, > abbrev__contains='SC'" > formShip = ShippingMethodForm(filter_string) > > Then the form def is: > > class ShippingMethodForm(forms.Form): > # tricky thing done here to change queryset based on ticket date > and destination > ship_method = forms.ModelChoiceField > (queryset=ShippingMethod.objects.none()) > def __init__(self, *args, **kwargs): > super(ShippingMethodForm, self).__init__(*args, **kwargs) > self.fields["ship_method"].queryset = > ShippingMethod.objects.filter(filter_string) > > Doesn't work, I get NameError ....global name 'filter_string' is not > defined > > Also this is the GET portion of the view, so putting request.POST in > there is not appropriate. > > On May 11, 4:10 pm, google torp <toppe...@gmail.com> wrote: > > > This should fix it. > > > def __init__(self, something, *args, **kwargs): > > super(ShippingMethodForm, self).__init__(*args, **kwargs) > > self.fields["ship_method"].queryset = > > ShippingMethod.objects.filter(something) > > > when you initiate the form, you do it like this: > > form = ShippingMethodForm(something, request.POST) > > > ~Jakob > > > On 11 Maj, 22:48, adrian <adrian...@gmail.com> wrote: > > > > I want to create a form with a select box populated from a query that > > > I pass from the view. > > > > For example: > > > > if country == 'Canada': > > > methods = ShippingMethod.objects.filter( > > > delivery_time__lte=time_avail_hours, > > > abbrev__contains='SC' > > > ) > > > else: > > > methods = ShippingMethod.objects.filter( > > > delivery_time__lte=time_avail_hours, > > > abbrev__contains='SU' > > > ) > > > > formShip = ShippingMethodForm(initial={ > > > 'queryset': methods, > > > }) > > > > My Form is defined as: > > > > class ShippingMethodForm(forms.Form): > > > ship_method = forms.ModelChoiceField > > > (queryset=ShippingMethod.objects.none()) > > > def __init__(self, *args, **kwargs): > > > super(ShippingMethodForm, self).__init__(*args, **kwargs) > > > self.fields["ship_method"].queryset = > > > ShippingMethod.objects.filter(something) > > > > However the queryset I define in the view is not being used by > > > ShippingMethodForm, without the __init__ method shown. I don't know > > > how to pass the "initial" argument to the init method. What is the > > > correct way to do this? > > > > Thanks --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---