Grappeli を使っている場合のみに発生するかもしれない。
Django5 あたりから、 django.contrib.admin.helpers.AdminReadonlyField のインスタンス変数 field に is_hidden というキーが追加された。
このキーは、AdminForm のウィジェットが HiddenInput
などの場合に True になる。(コード)
そして、Form
の _meta.widgets['フィールド名']
が存在しない場合、ウィジェットは HiddenInput
になる(コード)
そのため、Adminのフォームクラスに、Meta を定義して、 widgets に TextInput 等を適当に指定すれば、 へんな str(dict)
の表示ではなくウィジェットの表示になる。
class MyInlineAdminForm(forms.ModelForm):
class Meta:
# Django5 から追加。無いと、str(dict)の値が表示されて変になる。
# TextInput としているが、ReadOnly なのでIDはただの文字列になる。
widgets = {
'id': forms.TextInput(),
}
...
コメント