﻿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
35848	Problem with UniqueConstraint on fields, one of which allows NULL value.	Андрей		"UniqueConstraint does not work correctly for several fields, one of which is nullable.

{{{
class MyModel(models.Model):

    id = models.BigAutoField(primary_key=True, editable=False)
    name = models.CharField(max_length=1000, verbose_name=""Name"")
    measure = models.ForeignKey(
        Measure,
        related_name=""mymodel_measure"",
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        verbose_name=""Measure"",
    )


    class Meta:
        constraints = [
            models.UniqueConstraint(
                fields=[""name""],
                name=""mymodel_unique_name_measure_null"",
                condition=Q(measure__isnull=True),
                violation_error_message=""Error message for null"",
            ),
            models.UniqueConstraint(
                fields=[""name"", ""measure""],
                name=""mymodel_unique_name_measure_not_null"",
                condition=Q(measure__isnull=False),
                violation_error_message=""Error message for not null"",
            ),
        ]
}}}

Database  - Postgres 15.

The error is as follows: if there is a record with the field measure = not null, you can create a new record with the same name and measure = null. And if there is an entry with measure = null, then a new entry with the same name and measure = not null does not work.

From the Postgres side, Constraints are created and working correctly.

Error message:
{{{
{
  ""error"": ""{'name': [ErrorDetail(string='The name of the mymodel with this Name already exists.', code='unique')]}""
}
}}}

"	Bug	closed	Database layer (models, ORM)	5.1	Normal	invalid	UniqueConstraint, nullable, null		Unreviewed	0	0	0	0	0	0
