機械音痴な情報系

エラーの解決方法とTips

【djangoのエラー】'ModelBase' object does not support indexing

久しぶりにdjangoでmodelを書いていたら大して嵌ってないけど見たこと無いエラーを見たのでメモ。

エラー1

エラー文

anime = models.ManyToManyField('アニメ', Anime, blank=True)
'ModelBase' object does not support indexing

解決方法

anime = models.ManyToManyField(Anime, blank=True, related_name='animes')

エラー2

エラー文

name = models.CharField('名前', max_length=255, unique=True)

ManyToManyでなければ文字列を書くとadminサイトにその文字で反映される。

anime = models.ManyToManyField('アニメ', Anime, related_name='animes',blank=True)

しかしこうすると、、、

 __init__() got multiple values for argument 'related_name'

こんなエラーが出る。

解決方法

anime = models.ManyToManyField(Anime, related_name='animes',blank=True, verbose_name='アニメ')

verbose_nameに値を渡して解決。
日本語名がadminサイトで見れるようになった。
f:id:saneeeatsu:20180519114328p:plain