-----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 django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. 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.