@classmethod
def get_fields(cls, fields=None, excludes=None):
    """
        Given any explicit fields to include and fields to exclude, add
        additional fields based on the associated model.
        """
    final_fields = {}
    fields = fields or []
    excludes = excludes or []
    if not cls._meta.object_class:
        return final_fields
    for f in cls._meta.object_class._meta.fields:
        if f.name in cls.base_fields:
            continue
        if f.name not in fields:
            continue
        if f.name in excludes:
            continue
        if cls.should_skip_field(f):
            continue
        api_field_class = cls.api_field_from_django_field(f)
        kwargs = {'attribute': f.name, 'help_text': f.help_text,
            'verbose_name': f.verbose_name}
        if f.null is True:
            kwargs['null'] = True
        kwargs['unique'] = f.unique
        if not f.null and f.blank is True:
            kwargs['default'] = ''
            kwargs['blank'] = True
        if f.get_internal_type() == 'TextField':
            kwargs['default'] = ''
        if f.has_default():
            kwargs['default'] = f.default
        if getattr(f, 'auto_now', False):
            kwargs['default'] = f.auto_now
        if getattr(f, 'auto_now_add', False):
            kwargs['default'] = f.auto_now_add
        final_fields[f.name] = api_field_class(**kwargs)
        final_fields[f.name].instance_name = f.name
    return final_fields
