#34979: inlineformset_factory sets max_num forms to one even though there is a
unique_together constraint
-------------------------------+--------------------------------------
     Reporter:  Evan Hallein   |                    Owner:  nobody
         Type:  Uncategorized  |                   Status:  new
    Component:  contrib.admin  |                  Version:  3.2
     Severity:  Normal         |               Resolution:
     Keywords:  inline admin   |             Triage Stage:  Unreviewed
    Has patch:  0              |      Needs documentation:  0
  Needs tests:  0              |  Patch needs improvement:  0
Easy pickings:  0              |                    UI/UX:  1
-------------------------------+--------------------------------------
Description changed by Evan Hallein:

Old description:

> I have a unique_together primary key in one of my models.  When adding an
> inline admin for that model, the interface only allows adding one new
> object.  I have tracked it down to code in django/django/forms/models.py:
> {{{
> fk = _get_foreign_key(parent_model, model, fk_name=fk_name)
>     # enforce a max_num=1 when the foreign key to the parent model is
> unique.
>     if fk.unique:
>         max_num = 1
> }}}
>
> While this makes sense for a single unique primary key, it is the wrong
> behavior for a composite primary key.
>
> Is a fix needed in Django so multiple objects with unique_together
> primary keys can be added as inlines, or should this be done using custom
> code?

New description:

 I have a unique_together primary key in one of my models.  When adding an
 inline admin for that model, the interface only allows adding one new
 object.  I have tracked it down to code in django/django/forms/models.py:
 {{{
 fk = _get_foreign_key(parent_model, model, fk_name=fk_name)
     # enforce a max_num=1 when the foreign key to the parent model is
 unique.
     if fk.unique:
         max_num = 1
 }}}

 this is my model (autogenerated from an existing database):
 class TrtMeasurements(models.Model):
     observation = models.OneToOneField('TrtObservations',
 models.DO_NOTHING, primary_key=True)
     measurement_type = models.ForeignKey(TrtMeasurementTypes,
 models.DO_NOTHING, db_column='measurement_type')
     measurement_value = models.FloatField()
     comments = models.TextField(blank=True, null=True)

     class Meta:
         managed = False
         db_table = 'trt_measurements'
         unique_together = (('observation', 'measurement_type'),)

 While this makes sense for a single unique primary key, it is the wrong
 behavior for a composite primary key.

 Is a fix needed in Django so multiple objects with unique_together primary
 keys can be added as inlines, or should this be done using custom code?

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34979#comment:1>
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107018beabd5836-b24db87b-d45d-445a-b4f4-53a2cb993b24-000000%40eu-central-1.amazonses.com.

Reply via email to