Jak sprawdzić ograniczenie unikalności dla klucza obcego (django)

Mam następującą (uproszczoną) strukturę danych:

Site
-> Zone
   -> Room
      -> name

Chcę, aby nazwa każdego pokoju była unikalna dla każdej witryny.

Wiem, że gdybym tylko chciał wyjątkowości dla każdej Strefy, mógłbym:

class Room(models.Model):
    zone = models.ForeignKey(Zone)
    name = models.CharField(max_length=255) 

    class Meta:
        unique_together = ('name', 'zone')

Ale nie mogę zrobić tego, czego naprawdę chcę, czyli:

class Room(models.Model):
    zone = models.ForeignKey(Zone)
    name = models.CharField(max_length=255) 

    class Meta:
        unique_together = ('name', 'zone__site')

Próbowałem dodać metodę validate_unique, jak zasugerowałto pytanie:

class Room(models.Model):
    zone = models.ForeignKey(Zone)
    name = models.CharField(max_length=255) 

    def validate_unique(self, exclude=None):
        qs = Room.objects.filter(name=self.name)
        if qs.filter(zone__site=self.zone__site).exists():
            raise ValidationError('Name must be unique per site')

        models.Model.validate_unique(self, exclude=exclude)

ale muszę nie rozumieć punktu / implementacji validate_unique, ponieważ nie jest wywoływany, gdy zapisuję obiekt pokoju.

Jaki byłby właściwy sposób wdrożenia tej kontroli?

questionAnswers(3)

yourAnswerToTheQuestion