#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 [email protected].
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