У меня есть следующая (упрощенная) структура данных:
Site
-> Zone
   -> Room
      -> name
Я хочу, чтобы имя каждой комнаты было уникальным для каждого Сайта.
Я знаю, что если бы я просто хотел уникальности для каждой Зоны, я мог бы сделать:
class Room(models.Model):
    zone = models.ForeignKey(Zone)
    name = models.CharField(max_length=255) 
    class Meta:
        unique_together = ('name', 'zone')
Но я не могу делать то, что действительно хочу, а именно:
class Room(models.Model):
    zone = models.ForeignKey(Zone)
    name = models.CharField(max_length=255) 
    class Meta:
        unique_together = ('name', 'zone__site')
Я попытался добавить метод validate_unique, предложенный этим вопросом:
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)
но я должен неправильно понимать точку/реализацию validate_unique, потому что он не вызывается, когда я сохраняю объект Room.
Каким будет правильный способ реализовать эту проверку?