1
1
import itertools
2
2
3
3
from django .db import connection , models
4
+ from django .db .models .expressions import F
4
5
from django .test import TransactionTestCase , skipUnlessDBFeature
5
6
from django .test .utils import isolate_apps
6
7
@@ -544,11 +545,18 @@ class Book(models.Model):
544
545
545
546
class Meta :
546
547
app_label = "schema_"
547
- unique_together = [
548
- ("author.unique_together_three" , "author.unique_together_four" ),
548
+ constraints = [
549
+ models .UniqueConstraint (
550
+ F ("author__unique_together_three" ).asc (),
551
+ F ("author__unique_together_four" ).desc (),
552
+ name = "unique_together_34" ,
553
+ ),
549
554
(
550
- "author.address.unique_together_one" ,
551
- "author.address.unique_together_two" ,
555
+ models .UniqueConstraint (
556
+ F ("author__address__unique_together_one" ),
557
+ F ("author__address__unique_together_two" ).asc (),
558
+ name = "unique_together_12" ,
559
+ )
552
560
),
553
561
]
554
562
@@ -560,18 +568,14 @@ class Meta:
560
568
self .get_constraints_for_columns (
561
569
Book , ["author.unique_together_three" , "author.unique_together_four" ]
562
570
),
563
- [
564
- "schema__book_author.unique_together_three_author.unique_together_four_09a570b8_uniq"
565
- ],
571
+ ["unique_together_34" ],
566
572
)
567
573
self .assertEqual (
568
574
self .get_constraints_for_columns (
569
575
Book ,
570
576
["author.address.unique_together_one" , "author.address.unique_together_two" ],
571
577
),
572
- [
573
- "schema__book_author.address.unique_together_one_author.address.unique_together_two_2c2d1477_uniq"
574
- ],
578
+ ["unique_together_12" ],
575
579
)
576
580
editor .delete_model (Book )
577
581
self .assertTableNotExists (Book )
@@ -599,8 +603,8 @@ class Book(models.Model):
599
603
class Meta :
600
604
app_label = "schema_"
601
605
indexes = [
602
- models .Index (fields = [ "author. indexed_two"] ),
603
- models .Index (fields = [ "author.address. indexed_one"] ),
606
+ models .Index (F ( "author__indexed_two" ). asc (), name = " indexed_two" ),
607
+ models .Index (F ( "author__address__indexed_one" ). asc (), name = " indexed_one" ),
604
608
]
605
609
606
610
new_field = EmbeddedModelField (Author )
@@ -613,14 +617,14 @@ class Meta:
613
617
# Embedded indexes are created.
614
618
self .assertEqual (
615
619
self .get_constraints_for_columns (Book , ["author.indexed_two" ]),
616
- ["schema__boo_author._333c90_idx " ],
620
+ ["indexed_two " ],
617
621
)
618
622
self .assertEqual (
619
623
self .get_constraints_for_columns (
620
624
Book ,
621
625
["author.address.indexed_one" ],
622
626
),
623
- ["schema__boo_author._f54386_idx " ],
627
+ ["indexed_one " ],
624
628
)
625
629
editor .delete_model (Book )
626
630
self .assertTableNotExists (Book )
@@ -648,13 +652,9 @@ class Book(models.Model):
648
652
class Meta :
649
653
app_label = "schema_"
650
654
constraints = [
655
+ models .UniqueConstraint (F ("author__unique_constraint_two" ), name = "unique_two" ),
651
656
models .UniqueConstraint (
652
- fields = ["author.unique_constraint_two" ],
653
- name = "unique_two" ,
654
- ),
655
- models .UniqueConstraint (
656
- fields = ["author.address.unique_constraint_one" ],
657
- name = "unique_one" ,
657
+ F ("author__address__unique_constraint_one" ), name = "unique_one"
658
658
),
659
659
]
660
660
0 commit comments