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