在django admin中动态设置readonly_fields

Jak*_*lat 4 python django django-admin python-2.7

我可以根据正在查看的某个字段的值更改readonly_fields我的TranslationAdmin课程Translation吗?如果是这样,我该怎么做?

我唯一想到的是创建一个小部件来查看Translation并确定是否是一个只读小部件,但这似乎有点过分.

小智 12

您可以在管理员中继承get_readonly_fields()函数,并根据模型的特定字段值设置只读字段

 class TranslationAdmin(admin.ModelAdmin):
        ...

        def get_readonly_fields(self, request, obj=None):
            if obj.certainfield == something:
                return ('field1', 'field2')
            else:
                return super(TranslationAdmin, self).get_readonly_fields(request, obj)
Run Code Online (Sandbox Code Playgroud)

我希望它会对你有所帮助.