diff options
Diffstat (limited to 'rest_framework/fields.py')
| -rw-r--r-- | rest_framework/fields.py | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 236e0f1e..e1fd1b64 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -25,10 +25,14 @@ def is_simple_callable(obj):      """      True if the object is a callable that takes no arguments.      """ -    return ( -        (inspect.isfunction(obj) and not inspect.getargspec(obj)[0]) or -        (inspect.ismethod(obj) and len(inspect.getargspec(obj)[0]) <= 1) -    ) +    try: +        args, _, _, defaults = inspect.getargspec(obj) +    except TypeError: +        return False +    else: +        len_args = len(args) if inspect.isfunction(obj) else len(args) - 1 +        len_defaults = len(defaults) if defaults else 0 +        return len_args <= len_defaults  def get_component(obj, attr_name):  | 
