why can't we keep using toString and use a list of query Ids for QueryDataSource?
Otherwise I would just create a toShortString method in some AbstractDataSource, that defaults to toString, and QueryDataSource can override toShortString to list only IDs.