gpt4 book ai didi

Django Admin - 预填充字段并设置为只读

转载 作者:行者123 更新时间:2023-12-02 17:02:41 27 4
gpt4 key购买 nike

我想在创建或更新对象时自动在模型中设置一个字段(当前用户)并将其设置为只读,因此用户无法更改它:

为了预填充字段:

@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

这行得通,但是当我想使用以下方法将该字段设置为只读时:

readonly_fields=('user', )

应用因错误而崩溃:

KeyError at /admin/api/model/add/
'user'

任何人都可以帮助我并解释我如何使用 django admin 实现我的目标吗?

谢谢!

最佳答案

我发现的解决方法是:

form.base_fields['user'].disabled = True

您还可以通过以下方式添加帮助文本:

form.base_fields['user'].help_text = "some help text"

因此在您的代码中它将是:

    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

那么你就不必使用readonly_fields

关于Django Admin - 预填充字段并设置为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53253288/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com