docs: def join_on(self, attr):
          """Creates a JoinTerm in preparation for joining with another table, to 
             indicate what attribute should be used in the join.  Only indexed attributes
             may be used in a join.
             @param attr: attribute name to join from this table (may be different
                 from the attribute name in the table being joined to)
             @type attr: string
             @returns: L{JoinTerm}"""
          if attr not in self._indexes:
              raise ValueError("can only join on indexed attributes")
          return JoinTerm(self, attr)