﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
14119	fields_for_model returns all fields when fields parameter is the empty tuple	alexdutton	nobody	"When attempting to use `modelformset_factory` to generate forms where the user can only delete objects (i.e. not edit them), one would expect a `fields=()` to create forms with only delete checkboxes. However, `fields_for_model` uses the following check to determine whether to restrict fields:

{{{
#!python
 if fields and not f.name in fields:
     continue
}}}

When passed the empty tuple, fields are never skipped as bool( () ) == False, resulting in all fields being displayed.

This should be:

{{{
#!python
 if fields is not None and not f.name in fields:
     continue
}}}

I've attached a patch for both `construct_instance` (which also has the wrong behaviour) and `fields_for_model`.

The additional regression tests cover `construct_instance`, `fields_for_model`, `modelformset_factory` and `ModelForm`. The latter is included even though the usage of `fields=()` in the this case is arguably nonsensical.
"		closed	Forms	1.2		fixed	model forms		Ready for checkin	1	0	0	0	0	0
