在Django Admin中根据另一个字段的值创建一个readonly字段

Ani*_*ese 13 django django-models django-forms

如何根据来自另一个字段的值在Django Admin中创建一个只读或不可编辑的字段?我已经使用readonly_fields=('amount',)但这不会解决我的问题,因为我需要根据另一个字段来管理它.

mVC*_*Chr 22

您可以覆盖管理员的get_readonly_fields方法:

class MyAdmin(admin.ModelAdmin):

    def get_readonly_fields(self, request, obj=None):
        if obj and obj.another_field == 'cant_change_amount':
            return self.readonly_fields + ('amount',)
        return self.readonly_fields
Run Code Online (Sandbox Code Playgroud)