#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.