Re: Getting value from session in ModelForm

2011-02-08 Thread SimpleDimple
I understand what you mean about the scope

Thanks for the sample code, very helpful, will try it out and let you
know.

Thanks,

On Feb 8, 2:45 pm, Daniel Roseman  wrote:
> 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.



Re: Getting value from session in ModelForm

2011-02-08 Thread Daniel Roseman
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.



Getting value from session in ModelForm

2011-02-07 Thread SimpleDimple
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

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