Opened 5 years ago
Closed 5 years ago
#32370 closed Bug (duplicate)
Model._perform_unique_checks cannot properly validate simultaneous adding and changing
| Reported by: | Roman | Owned by: | nobody |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | 3.1 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Imagine there is a model with a unique field.
class Test(models.Model):
index = models.PositiveIntegerField()
name = models.CharField(max_length=256)
class Meta:
constraints = (
models.UniqueConstraint(
fields=('index'),
name='%(app_label)s_%(class)s_U1'),
)
If I have one model with values (0, "old") and then try to update existing model to (1, "old") and simultaneously add (0, "new"), checks in Model._perform_unique_checks fail, despite there will be no constraint violation at the end of transaction.
Change History (3)
comment:1 by , 5 years ago
comment:3 by , 5 years ago
| Resolution: | → duplicate |
|---|---|
| Status: | new → closed |
yeah that was my thought as well, I'll close for now as it seems like just another flavor of #25139 using a new API.
Note:
See TracTickets
for help on using tickets.
Does the problem manifests itself if you use define your unique constraint using
index = models.PositiveIntegerField(unique=True)instead of relying onMeta.constraints?