5 return self.__getattribute__(field)
8 def _formatField(self, field):
12 if hasattr(v, '__iter__'):
16 return '[%d x %s]'%(len(v), type(v[0]))
20 ignore = self._ignore()
21 keys = sorted(self.__class__.__dict__.keys())
22 return [(k,self._formatField(k)) for k in keys if k[0]!="_" and k not in ignore]
24 classname = self.__class__.__name__
26 if self._identity_field:
27 identity = self.__dict__.get(self._identity_field)
28 identity = ' ' + (identity and repr(identity) or 'hash=%d'%hash(self))
32 payload = " ".join(["%s=%s" % (k, v) for k,v in self._fields()])
34 payload = ": "+payload
36 return "<%s%s%s>" % (classname, identity, payload)
38 return [self._identity_field, 'c', 'query', 'get']
40 class FormattableRecord(Record):
42 def _formatField(self, field):
43 func = self._format.get(field)
45 return func(self.get(field))
47 return super(FormattableRecord, self)._formatField(field)
49 class NullableRecord(FormattableRecord):
52 v = self.__dict__.get(field)
56 return self._default.get(field)