'Given any explicit fields to include and fields to exclude, add
additional fields based on the associated model.'

@classmethod
def get_fields(cls, fields=None, excludes=None):

    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 = {u'attribute': f.name, u'help_text': f.help_text, u'verbose_name': f.verbose_name}
        if (f.null is True):
            kwargs[u'null'] = True
        kwargs[u'unique'] = f.unique
        if ((not f.null) and (f.blank is True)):
            kwargs[u'default'] = u''
            kwargs[u'blank'] = True
        if (f.get_internal_type() == u'TextField'):
            kwargs[u'default'] = u''
        if f.has_default():
            kwargs[u'default'] = f.default
        if getattr(f, u'auto_now', False):
            kwargs[u'default'] = f.auto_now
        if getattr(f, u'auto_now_add', False):
            kwargs[u'default'] = f.auto_now_add
        final_fields[f.name] = api_field_class(**kwargs)
        final_fields[f.name].instance_name = f.name
    return final_fields
