﻿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
23167	BaseForm lacks a useful repr	Keryn Knight <django@…>	nobody	"Currently, form instances have a useful `__str__` which renders them out as a table, but the `__repr__` (or lack thereof) for them is the same old unhelpful `<module.FormName at 0xDEADBEEF>` which all Python classes get by default.

It would be more useful to those of us who live in pdb/repl (and debug-toolbar template contexts -- which use `pprint.pformat` for rendering values, which internally uses `saferepr`, which as you might expect, eventually calls `repr(x)`) if the repr had some info about the form itself.

Off the top of my head, is_bound, field names, valid state would be a reasonable representation of the form, such that you get something like `<module.FormName is_bound=True, is_valid=False, fields=('a', 'b', 'c')>`

A slight complication is that the is_valid bool couldn't be obtained via `is_valid` because that triggers validation -- it would instead need to be `is_bound and not self._errors` or something (I'm assuming ErrorDict returns truthy/falsy the same as dict does)
Further, the field names ought to come from the keys of `self.fields` rather than `base_fields`, as the former is instance specific and often gets modified.

One could also make the case for adding `has_changed` into the repr, but in my experience, it's a lesser-used piece of the API; ditto the prefix.

There've been a few tickets for repr-adding goodness (#22906, #22531, #19543) so I'm assuming that providing a richer REPL experience in general means there may be merit to this ticket.
"	New feature	closed	Forms	dev	Normal	fixed		Areski Belaid	Accepted	1	0	0	0	0	0
