On Monday, 1 August 2011 12:43:23 UTC+1, Tom Evans wrote: > > On Mon, Aug 1, 2011 at 11:08 AM, Abhilash Inumella > <abhilas...@gmail.com> wrote: > > Dear all, > > > > I have a class QuestionView which is derived from FormView class. Here > > is the code snippet to explain my problem: > > > > class QuestionView(FormView): > > .. > > context_var1 = y > > This declares a class attribute called context_var1, which initially > has the value y. When you construct an instance of this class, this is > copied to self.context_var1 > > Er, no. This declares a class attribute called context_var1, full stop. No copying to instance attributes takes here at all.
> def form_valid (self, form): > > ... > > self.context_var1 = x > > This updates self.context_var1 > Yes. Which refers to the class attribute. So all instances will see the updated value. > > ... > > def get_context_data(self, **kwargs): > > ... > > context['context_var1'] = context_var1 > > Here you are using the class attribute, rather than the instance > attribute. The class attribute is never changed from y, only the > instance attribute. You want self.context_var1 here. > > Yes he does, but not for that reason. > > ... > > return context > > > > > > As shown above, I update a set of context variables in form_valid and > > I intend to use these in the template - hence the variables in context > > dictionary. The problem with this code is that the change in > > context_var1 isn't seen - might be because 'get_context_data' is > > called before 'form_valid' method. Is there is a work around for > > this? > > Well, you've got to call the functions in the appropriate order. Try > accessing the attribute via self, and see where that gets you. > To make this work, the OP needs to assign to `self.context_var1` in the `__init__ method. -- DR. -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/ZrHadRZnil0J. 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.