Django adminのフォームで、外部キーが指定されている際の仕様

Python

フォームで登録・変更時のforeign keyの値をobjectではなく、分かりやすい値にする方法

Django adminのフォーム登録を使用する際に、fieldsetsにforeign keyを持つフィールドを指定した場合、登録画面の該当のフィールドの箇所は、セレクトボックスの中身が全てobjectの選択になってしまいます。
これを、ちゃんと理解出来る文字にする方法をメモしておきます。

最初は、ModelFormを作らないといけないのかと思っていましたが、対処方法は簡単でした。

class Test(models.Model):
  user = models.ForiegnKey(users.User)
  
  class Meta:
    db_table = 'test'
  
  def __unicode__(self):
    return '%s' % self.user.username

ポイント

上記のように、unicodeメソッドを追加してあげるだけで簡単に対処出来ました。
Django adminはとても便利ですが、時々こう出来たらいいなと思うことをやりたい時は、一度Django adminのクラスのコードを覗いてみたりすると色々分かって良いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です