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