mirror of
https://github.com/django/django.git
synced 2025-07-12 07:45:11 +00:00
Refs #32096 -- Fixed ExclusionConstraint crash with JSONField key transforms in expressions.
Regression in 6789ded0a6
.
This commit is contained in:
parent
bbd55e5863
commit
ee0abac169
5 changed files with 26 additions and 1 deletions
|
@ -7,6 +7,7 @@ from django.db import (
|
|||
from django.db.models import (
|
||||
CheckConstraint, Deferrable, F, Func, Q, UniqueConstraint,
|
||||
)
|
||||
from django.db.models.fields.json import KeyTextTransform
|
||||
from django.db.models.functions import Left
|
||||
from django.test import skipUnlessDBFeature
|
||||
from django.utils import timezone
|
||||
|
@ -620,6 +621,22 @@ class ExclusionConstraintTests(PostgreSQLTestCase):
|
|||
editor.add_constraint(Scene, constraint)
|
||||
self.assertIn(constraint_name, self.get_constraints(Scene._meta.db_table))
|
||||
|
||||
def test_expressions_with_key_transform(self):
|
||||
constraint_name = 'exclude_overlapping_reservations_smoking'
|
||||
constraint = ExclusionConstraint(
|
||||
name=constraint_name,
|
||||
expressions=[
|
||||
(F('datespan'), RangeOperators.OVERLAPS),
|
||||
(KeyTextTransform('smoking', 'requirements'), RangeOperators.EQUAL),
|
||||
],
|
||||
)
|
||||
with connection.schema_editor() as editor:
|
||||
editor.add_constraint(HotelReservation, constraint)
|
||||
self.assertIn(
|
||||
constraint_name,
|
||||
self.get_constraints(HotelReservation._meta.db_table),
|
||||
)
|
||||
|
||||
def test_range_adjacent_initially_deferred(self):
|
||||
constraint_name = 'ints_adjacent_deferred'
|
||||
self.assertNotIn(constraint_name, self.get_constraints(RangesModel._meta.db_table))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue