Opened 4 years ago
Last modified 4 years ago
#33447 closed New feature
min_num on formsets should not just be added to extra, again — at Initial Version
| Reported by: | typonaut | Owned by: | nobody | 
|---|---|---|---|
| Component: | Forms | Version: | 3.2 | 
| Severity: | Normal | Keywords: | inlineformset_factory min_num extra | 
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no | 
| Needs tests: | no | Patch needs improvement: | no | 
| Easy pickings: | no | UI/UX: | yes | 
Description
I have read #22628 and #27679.
I can see that the documentation says that if you have min_num = 1 and extra = 1 then you will get two blank inline forms in a new form.
I am flagging this as a new feature, although I think it is really a bug.
When using forms.models.inlineformset_factory min_num and extra input parameters are available. Logically min_num is really a validation parameter where extra is a utility/UI parameter. I believe that given this logic, with a new form and min_num = 1 and extra = 1 then there should only be one inline form displayed, rather than two as currently happens.
I would propose to add an additional input parameter to control this bahaviour and account for any backward compatibility issues: min_num_minimise as a boolean.
forms.models.inlineformset_factory(… 
                  extra=1,
                  min_num=1,
                  min_num_minimise=True
                  )
This would render one inline form on a new form, where:
forms.models.inlineformset_factory(…
                  extra=1,
                  min_num=1,
                  min_num_minimise=False,
                  )
Would maintain the current behaviour – with the default being min_num_minimise=False.
I believe that the current implementation is more than a little confusing from a UI perspective. While it is possible to code around this implementation and test for at least min_num forms, that is quite a lot of work and more prone to break with updates.