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

def validate_unique(self, *args, **kwargs):
    super(Room, self).validate_unique(*args, **kwargs)
qs = Room.objects.filter(name=self.name)
if qs.filter(zone__site=self.zone__site).exists():
    raise ValidationError({'name': ['Name must be unique per site']})
Как проверить ограничение уникальности по внешнему ключу (django)