毎回モデルに__unicode__定義するのめんどい
クラスデコレータとかで何とかならないかな?
def inspectable(klass): field_names = [field.get_attname() for field in klass._meta.fields] def _inspect(self): results = [] results.append('%s object' % self.__class__.__name__) for name in field_names: text = " %s: %s" % (name, self.__getattribute__(name)) results.append(text) return "\n".join(results) setattr(klass, "__str__", _inspect) return klass @inspectable class Book(models.Model): title = models.CharField(max_length=255) author = models.CharField(default="anonymous") publish_at = models.DateField(auto_now_add=True)
unicodeまわりが良く分かっていない。
追記
こうかも
def inspectable(klass): field_names = [field.get_attname() for field in klass._meta.fields] def _inspect(self): results = [] results.append('%s object' % self.__class__.__name__) for name in field_names: text = " %s: %s" % (name, self.__getattribute__(name)) results.append(text) return unicode("\n".join(results)) setattr(klass, "__unicode__", _inspect) return klass