some doc + minor code updates (__repr__ + Show... mixins)

This commit is contained in:
Bert Constantin
2010-02-04 18:09:15 +01:00
parent 2fcb7fba1a
commit 2795f7acd5
4 changed files with 53 additions and 45 deletions
+6 -9
View File
@@ -710,42 +710,39 @@ class PolymorphicModel(models.Model):
super(PolymorphicModel, self).__init__(*args, **kwargs)
def __repr__(self):
out = self.__class__.__name__ + ': id %d, ' % (self.pk or - 1); last = self._meta.fields[-1]
out = self.__class__.__name__ + ': id %d' % (self.pk or - 1)
for f in self._meta.fields:
if f.name in [ 'id' ] + self.polymorphic_internal_model_fields or 'ptr' in f.name: continue
out += f.name + ' (' + type(f).__name__ + ')'
if f != last: out += ', '
out += ', ' + f.name + ' (' + type(f).__name__ + ')'
return '<' + out + '>'
class ShowFields(object):
""" model mixin that shows the object's class, it's fields and field contents """
def __repr__(self):
out = 'id %d, ' % (self.pk); last = self._meta.fields[-1]
out = 'id %d, ' % (self.pk)
for f in self._meta.fields:
if f.name in [ 'id' ] + self.polymorphic_internal_model_fields or 'ptr' in f.name: continue
out += f.name
out += ', ' + f.name
if isinstance(f, (models.ForeignKey)):
o = getattr(self, f.name)
out += ': "' + ('None' if o == None else o.__class__.__name__) + '"'
else:
out += ': "' + getattr(self, f.name) + '"'
if f != last: out += ', '
return '<' + (self.__class__.__name__ + ': ') + out + '>'
class ShowFieldsAndTypes(object):
""" model mixin, like ShowFields, but also show field types """
def __repr__(self):
out = 'id %d, ' % (self.pk); last = self._meta.fields[-1]
out = 'id %d' % (self.pk)
for f in self._meta.fields:
if f.name in [ 'id' ] + self.polymorphic_internal_model_fields or 'ptr' in f.name: continue
out += f.name + ' (' + type(f).__name__ + ')'
out += ', ' + f.name + ' (' + type(f).__name__ + ')'
if isinstance(f, (models.ForeignKey)):
o = getattr(self, f.name)
out += ': "' + ('None' if o == None else o.__class__.__name__) + '"'
else:
out += ': "' + getattr(self, f.name) + '"'
if f != last: out += ', '
return '<' + self.__class__.__name__ + ': ' + out + '>'
+6 -6
View File
@@ -146,9 +146,9 @@ class testclass(TestCase):
# test ordering
expected = '''
[ <BlogB: id 4, name (CharField): "Bb3", >,
<BlogB: id 3, name (CharField): "Bb2", >,
<BlogB: id 2, name (CharField): "Bb1", >,
[ <BlogB: id 4, name (CharField): "Bb3">,
<BlogB: id 3, name (CharField): "Bb2">,
<BlogB: id 2, name (CharField): "Bb1">,
<BlogA: id 8, name (CharField): "B5", info (CharField): "i5">,
<BlogA: id 7, name (CharField): "B4", info (CharField): "i4">,
<BlogA: id 6, name (CharField): "B3", info (CharField): "i3">,
@@ -163,9 +163,9 @@ class testclass(TestCase):
<BlogA: id 6, name (CharField): "B3", info (CharField): "i3">,
<BlogA: id 5, name (CharField): "B2", info (CharField): "i2">,
<BlogA: id 1, name (CharField): "B1", info (CharField): "i1">,
<BlogB: id 2, name (CharField): "Bb1", >,
<BlogB: id 3, name (CharField): "Bb2", >,
<BlogB: id 4, name (CharField): "Bb3", > ]'''
<BlogB: id 2, name (CharField): "Bb1">,
<BlogB: id 3, name (CharField): "Bb2">,
<BlogB: id 4, name (CharField): "Bb3"> ]'''
x = '\n' + repr(BlogBase.objects.order_by('-BlogA___info'))
assert x == expected