#13794: Django does not respect to_field's model on an inline model admin
-------------------------------------+-------------------------------------
     Reporter:  sebastien@…          |                    Owner:  gautier
         Type:  Bug                  |                   Status:  new
    Component:  Forms                |                  Version:
     Severity:  Normal               |  1.5-beta-1
     Keywords:  admin inline         |               Resolution:
  to_field formset                   |             Triage Stage:  Accepted
    Has patch:  1                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by anonymous):

 After further investigation it seems that main functional difference
 between the two is that not setting the fk value on form construction
 (fix_inline_model_with_to_field.diff) results in the relationship field
 not being available on a new instance until after full_clean, specifically
 construct_instance, is called on the formset. Setting the fk value on
 construction (to_field_formsets.patch), means that the fk value and
 subsequently the relationship is available when dealing with a new item.

 Adding this line to the test in to_field_formsets.path will make the test
 pass for that patch but fail for fix_inline_model_with_to_field.diff:

 {{{
 self.assertEqual(formset[1].instance.user_id, "guido")
 }}}

 So there is a slight chance of fix_inline_model_with_to_field.diff
 breaking currently working code while to_field_formsets.patch will not.
 But as far as I can tell this undocumented so it's really your call either
 way.

 The problem is that right now, this does have potential to create invalid
 relationships, leading to data corruption. If the value set in
 _construct_form happens to be the same as a valid pk value of that same
 table, then the save happens silently resetting all your relationships to
 point to the wrong record.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/13794#comment:12>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to