#18803 closed Bug (fixed)
Django FormWizard.as_view condition_dict callable called multiple times?
| Reported by: | Owned by: | nobody | |
|---|---|---|---|
| Component: | contrib.formtools | Version: | 1.4 |
| Severity: | Release blocker | Keywords: | form wizard, as_view, condition_dict argument |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
The following is a snippet of how I have setup my FormWizard. When I hit this view function, 'bar' gets printed once and 'foo' gets printed 7 times:
# views.py def _show_repair_item_form_condition(wizard): print 'foo' return True @login_required def workshop(request): print 'bar' cw = WorkshopWizard.as_view([WorkshopRepairItemFormSet, EmptyForm], condition_dict={'0': _show_repair_item_form_condition}) return cw(request)
I have looked at the implmentation of the as_view function and can't find any trace of a bug causing this to happen. There is no documentation on the web about this issue either.
Any ideas?
Thanks, Mike
Change History (3)
comment:1 by , 13 years ago
comment:2 by , 13 years ago
| Resolution: | → invalid |
|---|---|
| Status: | new → closed |
comment:3 by , 13 years ago
| Resolution: | invalid → fixed |
|---|
Note:
See TracTickets
for help on using tickets.
This isn't a bug. The wizard doesn't make any guarantees about calling the conditions only once. On the contrary, the whole point of having a callable is being able to dynamically adjust the list of forms based on validation results (so the form_list will differ between validation and rendering).
PS. The
as_view()method is intended to be called only once per life of application (usually inurls.py), not on every request. While it's not an error to do so, it's a bit inefficient.