11import itertools
22
33from django .db import connection , models
4+ from django .db .models .expressions import F
45from django .test import TransactionTestCase , skipUnlessDBFeature
56from django .test .utils import isolate_apps
67
@@ -544,11 +545,18 @@ class Book(models.Model):
544545
545546 class Meta :
546547 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+ ),
549554 (
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+ )
552560 ),
553561 ]
554562
@@ -560,18 +568,14 @@ class Meta:
560568 self .get_constraints_for_columns (
561569 Book , ["author.unique_together_three" , "author.unique_together_four" ]
562570 ),
563- [
564- "schema__book_author.unique_together_three_author.unique_together_four_09a570b8_uniq"
565- ],
571+ ["unique_together_34" ],
566572 )
567573 self .assertEqual (
568574 self .get_constraints_for_columns (
569575 Book ,
570576 ["author.address.unique_together_one" , "author.address.unique_together_two" ],
571577 ),
572- [
573- "schema__book_author.address.unique_together_one_author.address.unique_together_two_2c2d1477_uniq"
574- ],
578+ ["unique_together_12" ],
575579 )
576580 editor .delete_model (Book )
577581 self .assertTableNotExists (Book )
@@ -599,8 +603,8 @@ class Book(models.Model):
599603 class Meta :
600604 app_label = "schema_"
601605 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" ),
604608 ]
605609
606610 new_field = EmbeddedModelField (Author )
@@ -613,14 +617,14 @@ class Meta:
613617 # Embedded indexes are created.
614618 self .assertEqual (
615619 self .get_constraints_for_columns (Book , ["author.indexed_two" ]),
616- ["schema__boo_author._333c90_idx " ],
620+ ["indexed_two " ],
617621 )
618622 self .assertEqual (
619623 self .get_constraints_for_columns (
620624 Book ,
621625 ["author.address.indexed_one" ],
622626 ),
623- ["schema__boo_author._f54386_idx " ],
627+ ["indexed_one " ],
624628 )
625629 editor .delete_model (Book )
626630 self .assertTableNotExists (Book )
@@ -648,13 +652,9 @@ class Book(models.Model):
648652 class Meta :
649653 app_label = "schema_"
650654 constraints = [
655+ models .UniqueConstraint (F ("author__unique_constraint_two" ), name = "unique_two" ),
651656 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"
658658 ),
659659 ]
660660
0 commit comments