Djangoのモデルに定義していないフィールドを追加する方法
こんな感じのModelを定義しているときに、追加でフィールドを入れたくなったときがありました。
class Sample(models.Model): uuid = models.UUIDField(unique=True) created_at = models.DateTimeField(auto_now_add=True) modified_at = models.DateTimeField(auto_now=True) class Meta: db_table = 'sample'
いれたフィールドをtemplateで使用して画面に表示するといった具合で使いました。
↓のコードで対応することができました。
model.__setattr__('icon', 'icon/' + sample.author.username)
iconを表示する際にusernameの前にフォルダ名が必要だったのです。
ですが、Djangoのタグを使っていて文字列の連結ができないし、カスタムタグで拡張することもできない。(少なくとも私には見つけられませんでした。)
最初はmodelはorderdictだからmodel['icon']
で対応できると思ったのですが、ダメでした。