Opened 7 years ago

Closed 7 years ago

Last modified 5 years ago

#11872 closed (fixed)

can't pass instance=None to inline formset

Reported by: Tobias McNulty Owned by: Brian Rosner
Component: Forms Version: 1.1
Severity: Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description

If you try to pass instance=None to a new unbound formset you get an exception:

Traceback (most recent call last):
  File "/home/tobias/caktus/eclipse-workspace/django-trunk/tests/regressiontests/model_formsets_regress/tests.py", line 152, in test_formset_with_none_instance
    form_set = FormSet(instance=None)
  File "../django/forms/models.py", line 721, in __init__
    backlink_value = getattr(self.instance, self.fk.rel.field_name)
AttributeError: 'UserSite' object has no attribute 'username'

because the formset is trying to instantiate the wrong type of model in place of the None instance.

A quick one-line change fixes the problem. Attached is a patch with a test demonstrating the problem and the proposed solution.

Attachments (1)

inline_formsets_none_instance.diff (1.4 KB) - added by Tobias McNulty 7 years ago.
add ticket # to test in patch

Download all attachments as: .zip

Change History (4)

Changed 7 years ago by Tobias McNulty

add ticket # to test in patch

comment:1 Changed 7 years ago by Brian Rosner

Needs documentation: unset
Needs tests: unset
Owner: changed from nobody to Brian Rosner
Patch needs improvement: unset
Triage Stage: UnreviewedAccepted

comment:2 Changed 7 years ago by Brian Rosner

Resolution: fixed
Status: newclosed

(In [11688]) Fixed #11872 -- Instantiate the correct model in BaseInlineFormSet.init when instance is None. Thanks tobias.

comment:3 Changed 5 years ago by Jacob

milestone: 1.2

Milestone 1.2 deleted

Note: See TracTickets for help on using tickets.
Back to Top