On Monday, February 7, 2011 8:27:55 PM UTC, SimpleDimple wrote:
>
> I am new to Django and building a school system but am an experienced 
> developer otherwise having firm grip over rails, .net, php & java. 
>
> I have the following class where on teacher add/edit form, I am trying 
> to filter values in class drop down based on school.  The value of 
> school_id is saved in session but as you can see below pulling value 
> from session fails in ModelForm, can someone please guide me on how to 
> get the value from session here ? 
>
>
> class TeacherForm(ModelForm): 
>     def __init__(self, *args, **kwargs): 
>         super(TeacherForm, self).__init__(*args, **kwargs) 
>         xclass = self.fields['xclass'].widget 
>
>         choices = [] 
>
>         #school_id = request.session['school_id']     # since this 
> fails, I have hard coded the value 2 in line below for now 
>         school_id = 2 
>         xclasses = Class.objects.filter(school=school_id) 
>         for c in xclasses: 
>             choices.append((c.id,c.name)) 
>         xclass.choices = choices


It's fundamental to Python programming generally - and, I would have 
thought, Java and Ruby (although not PHP) - that if you want access to an 
object in a scope, you need to pass it into that scope. In order for you to 
access request.session within that __init__ method, you'll need to 
explicitly make the request object available there, which means passing it 
in when you initialise the form.

I usually do it like this:

    class MyForm(forms.ModelForm):
        def __init__(self, *args, **kwargs):
            request = kwargs.pop('request')
            super(TeacherForm, self).__init__(*args, **kwargs)
            ...etc...

now initialise the form in your view:

    form = MyForm(request=request)

--
DR.

-- 
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