Hi Michal,

Thanks a lot. That was an eye-opener and a big help :)

Thanks.

On Friday, October 12, 2018 at 1:39:38 PM UTC+5:30, Michal Petrucha wrote:
>
> -----BEGIN PGP SIGNED MESSAGE----- 
> Hash: SHA512 
>
> On Fri, Oct 12, 2018 at 12:52:31AM -0700, Web Architect wrote: 
> > Hi, 
> > 
> > We are using Django for our ecommerce site. 
> > 
> > I have some confusion on when the code gets executed in Django. I have a 
> > django form with a choice field in module m1.py: 
> > 
> > class SomeForm(forms.Form): 
> >     field = forms.ChoiceField(choices=get_choices()) 
>
> The problem is here – you're calling get_choices, and passing the 
> result to the ChoiceField as a static list. If you pass get_choices as 
> a function, it will be called at runtime, whenever the form is 
> instantiated: 
>
> class SomeForm(forms.Form): 
>     field = forms.ChoiceField(choices=get_choices) 
>
> Good luck, 
>
> Michal 
>
> > 
> > 
> > def get_choices(): 
> >     return some choices 
> > 
> > 
> > In views.py, I have imported SomeForm: 
> > 
> > from app.m1 import SomeForm 
> > 
> > class SomeFormView(Formview): 
> >     form = SomeForm 
> >     ...rest of the view code 
> > 
> > 
> > When I run the django project using ./manage.py runserver, I am 
> surprised 
> > to see that get_choices gets executed. This is undesirable as I can have 
> a 
> > Django queryset in get_choices and I do not want unnecessary DB access. 
> > 
> > It would be really helpful if someone can shed some light on the above 
> and 
> > tell me what exactly is happening. How can I avoid get_choices getting 
> > executed during django start  or running? get_choices should only get 
> > executed when SomeFormView is accessed. 
> > 
> > Thanks. 
> -----BEGIN PGP SIGNATURE----- 
> Version: GnuPG v1 
>
> iQIcBAEBCgAGBQJbwFaVAAoJEHA7T/IPM/klm44QAJMjeGXjs7fzHaCpi7Sn16Ib 
> bHAyoluqmS5+Pw9yYsg3FaYJwx1JC6r/vB6Hv9WfBAI5cIzJa+k0e8T7PkuUg3Nc 
> ioG4izJWYC8F4MSXXynRVrt8UR4OfQrDw2tmXPXI++nf9GgMmN1Q/VJwVyWKUK8h 
> MD6L8ap0IIhhjOr3Nwvc1lsT68Hx4eEBmPcGa88FsHMUpox6ktIYmIeCq9WDIVQz 
> GKxMdRr+SUjcq7NeqqLL1davlL2YIKAaSdy1tNaxQ890u436MUkQ0L5FK2FtpKIh 
> ViqraEi/BaHWzZ6Dr6l6oG5QlrIHiG89VjYvYYo6qAtB67Yl5A6QnLY1YkMpiNkv 
> jZJt+u3ad4+qP5JQ0/SDYruyN2cjt6SVowQmAAxyGYbzFYMhWEz/NDopPXB/8q01 
> nr7o+N4azH696Ryr9bH5KEilrZvoxxxt9Zb+IGaJU5tfHs4A2Pzmw6aNmwMkRAVg 
> Mo0eaQuOu4zG6ix5X2wX7z+2MrGfBw0OJisOH3BzPOQ9CdHOaB0HuaveKQ39aVCL 
> vmGgPy+NnBr+EL/r1PC+sD9JjSFM6sD8+7fB1rvEtYsILj+DHHICYOZGaBGU34zm 
> TJjCHDSTp5Dx/p5mrt8Y9UJLf5U7C2Sz562R2ez3wKkrCqxGKN7fY7cq0oB01Cph 
> geJsa6+RNjRHpCbM1U/U 
> =7eA9 
> -----END PGP SIGNATURE----- 
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/242ffbae-150e-45ec-877f-0a983044258d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to