@@ -316,6 +316,14 @@ class RelationalModel(models.Model):
316
316
through = models .ManyToManyField (ThroughTargetModel , through = Supplementary , related_name = 'reverse_through' )
317
317
318
318
319
+ class UniqueTogetherModel (models .Model ):
320
+ foreign_key = models .ForeignKey (ForeignKeyTargetModel , related_name = 'unique_foreign_key' )
321
+ one_to_one = models .OneToOneField (OneToOneTargetModel , related_name = 'unique_one_to_one' )
322
+
323
+ class Meta :
324
+ unique_together = ("foreign_key" , "one_to_one" )
325
+
326
+
319
327
class TestRelationalFieldMappings (TestCase ):
320
328
def test_pk_relations (self ):
321
329
class TestSerializer (serializers .ModelSerializer ):
@@ -395,6 +403,32 @@ class Meta:
395
403
""" )
396
404
self .assertEqual (unicode_repr (TestSerializer ()), expected )
397
405
406
+ def test_nested_unique_together_relations (self ):
407
+ class TestSerializer (serializers .HyperlinkedModelSerializer ):
408
+ class Meta :
409
+ model = UniqueTogetherModel
410
+ depth = 1
411
+ expected = dedent ("""
412
+ TestSerializer():
413
+ url = HyperlinkedIdentityField(view_name='uniquetogethermodel-detail')
414
+ foreign_key = NestedSerializer(read_only=True):
415
+ url = HyperlinkedIdentityField(view_name='foreignkeytargetmodel-detail')
416
+ name = CharField(max_length=100)
417
+ one_to_one = NestedSerializer(read_only=True):
418
+ url = HyperlinkedIdentityField(view_name='onetoonetargetmodel-detail')
419
+ name = CharField(max_length=100)
420
+ class Meta:
421
+ validators = [<UniqueTogetherValidator(queryset=UniqueTogetherModel.objects.all(), fields=('foreign_key', 'one_to_one'))>]
422
+ """ )
423
+ if six .PY2 :
424
+ # This case is also too awkward to resolve fully across both py2
425
+ # and py3. (See above)
426
+ expected = expected .replace (
427
+ "('foreign_key', 'one_to_one')" ,
428
+ "(u'foreign_key', u'one_to_one')"
429
+ )
430
+ self .assertEqual (unicode_repr (TestSerializer ()), expected )
431
+
398
432
def test_pk_reverse_foreign_key (self ):
399
433
class TestSerializer (serializers .ModelSerializer ):
400
434
class Meta :
0 commit comments