﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
31932	Unique checking in formsets should exclude forms marked for deletion.	Marco Beri	Clifford Gama	"Validation of a formset with a unique_together doesn't take deleted children into account.

Method is_valid of forms/formset.py::BaseFormSet should take in account deleted children forms to prevent a wrong validation error.


{{{
#!div style=""font-size: 80%""
Simple models.py:
  {{{#!python
from django.db import models
from django.utils.translation import ugettext as _


class Book(models.Model):
    title = models.CharField(max_length=64, verbose_name=_(""Title""))


class Language(models.Model):
    language = models.CharField(max_length=64, verbose_name=_(""Language""))


class Translator(models.Model):
    name = models.CharField(max_length=64, verbose_name=_(""Name""))
    book = models.ForeignKey(Book, on_delete=models.CASCADE)
    language = models.ForeignKey(Language, on_delete=models.CASCADE)

    class Meta:
        unique_together = ('book', 'language')
  }}}
}}}

{{{
#!div style=""font-size: 80%""
Simple admin.py:
  {{{#!python
from django.contrib import admin

from .models import Book, Language, Translator


class TranslatorInline(admin.TabularInline):
    model = Translator


@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    inlines = [TranslatorInline]


@admin.register(Language)
class LanguageAdmin(admin.ModelAdmin):
    pass
  }}}
}}}

Wrong validation error:
[[Image(unique-together-formset.png)]]"	New feature	assigned	Forms	3.1	Normal		formset, inline, unique_together		Accepted	0	0	0	0	0	0
