Cre*_*ter 2 django field admin readonly populate
我想在创建或更新对象时自动在模型中设置一个字段(当前用户)并使其只读,因此用户无法更改它:
为了预填充该字段:
@admin.register(Model)
class ModelAdmin(admin.ModelAdmin):
list_display = ('field_1', 'user')
def get_form(self, request, obj=None, **kwargs):
form = super(ModelAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['user'].initial = request.user
return form
Run Code Online (Sandbox Code Playgroud)
这是可行的,但是当我想使用以下方法使该字段只读时:
readonly_fields=('user', )
Run Code Online (Sandbox Code Playgroud)
该应用程序因错误而崩溃:
KeyError at /admin/api/model/add/
'user'
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我并解释我如何使用 django admin 实现我的目标吗?
谢谢!
小智 5
我发现的解决方法是:
form.base_fields['user'].disabled = True
Run Code Online (Sandbox Code Playgroud)
您还可以通过以下方式添加帮助文本:
form.base_fields['user'].help_text = "some help text"
Run Code Online (Sandbox Code Playgroud)
所以在你的代码中它将是:
def get_form(self, request, obj=None, **kwargs):
form = super(ModelAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['user'].initial = request.user
form.base_fields['user'].disabled = True
form.base_fields['user'].help_text = "This field is not editable"
return form
Run Code Online (Sandbox Code Playgroud)
那么你就不必使用readonly_fields
| 归档时间: |
|
| 查看次数: |
2221 次 |
| 最近记录: |