@@ -517,11 +517,15 @@ def filter(self, **kwargs):
517
517
assert queryset .called_with == {'race_name' : 'bar' , 'position' : 1 }
518
518
519
519
520
+ class FancyConditionModel (models .Model ):
521
+ id = models .IntegerField (primary_key = True )
522
+
523
+
520
524
class UniqueConstraintModel (models .Model ):
521
525
race_name = models .CharField (max_length = 100 )
522
526
position = models .IntegerField ()
523
527
global_id = models .IntegerField ()
524
- fancy_conditions = models .IntegerField ( )
528
+ fancy_conditions = models .ForeignKey ( FancyConditionModel , on_delete = models . CASCADE )
525
529
526
530
class Meta :
527
531
constraints = [
@@ -578,23 +582,24 @@ class Meta:
578
582
579
583
class TestUniqueConstraintValidation (TestCase ):
580
584
def setUp (self ):
585
+ fancy_model_condition = FancyConditionModel .objects .create (id = 1 )
581
586
self .instance = UniqueConstraintModel .objects .create (
582
587
race_name = 'example' ,
583
588
position = 1 ,
584
589
global_id = 1 ,
585
- fancy_conditions = 1
590
+ fancy_conditions = fancy_model_condition
586
591
)
587
592
UniqueConstraintModel .objects .create (
588
593
race_name = 'example' ,
589
594
position = 2 ,
590
595
global_id = 2 ,
591
- fancy_conditions = 1
596
+ fancy_conditions = fancy_model_condition
592
597
)
593
598
UniqueConstraintModel .objects .create (
594
599
race_name = 'other' ,
595
600
position = 1 ,
596
601
global_id = 3 ,
597
- fancy_conditions = 1
602
+ fancy_conditions = fancy_model_condition
598
603
)
599
604
600
605
def test_repr (self ):
@@ -618,24 +623,27 @@ def test_unique_together_condition(self):
618
623
Fields used in UniqueConstraint's condition must be included
619
624
into queryset existence check
620
625
"""
626
+ fancy_model_condition_9 = FancyConditionModel .objects .create (id = 9 )
627
+ fancy_model_condition_10 = FancyConditionModel .objects .create (id = 10 )
628
+ fancy_model_condition_11 = FancyConditionModel .objects .create (id = 11 )
621
629
UniqueConstraintModel .objects .create (
622
630
race_name = 'condition' ,
623
631
position = 1 ,
624
632
global_id = 10 ,
625
- fancy_conditions = 10 ,
633
+ fancy_conditions = fancy_model_condition_10 ,
626
634
)
627
635
serializer = UniqueConstraintSerializer (data = {
628
636
'race_name' : 'condition' ,
629
637
'position' : 1 ,
630
638
'global_id' : 11 ,
631
- 'fancy_conditions' : 9 ,
639
+ 'fancy_conditions' : fancy_model_condition_9 ,
632
640
})
633
641
assert serializer .is_valid ()
634
642
serializer = UniqueConstraintSerializer (data = {
635
643
'race_name' : 'condition' ,
636
644
'position' : 1 ,
637
645
'global_id' : 11 ,
638
- 'fancy_conditions' : 11 ,
646
+ 'fancy_conditions' : fancy_model_condition_11 ,
639
647
})
640
648
assert not serializer .is_valid ()
641
649
0 commit comments