-----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/20181012080854.GL18928%40koniiiik.org.
For more options, visit https://groups.google.com/d/optout.

Reply via email to