code: def get_model_columns(model, fields=None, meta='Table'):
      
      from copy import deepcopy
  
      fields = fields or []
      model = functions.get_model(model)
  
      if not fields:
          if hasattr(model, meta):
              fields = getattr(model, meta).fields
          else:
              fields = [x for x, y in model._fields_list]
  
      fields_list = []
      for x in fields:
          if isinstance(x, (str, unicode)):
              f = get_grid_column(model, x)
          elif isinstance(x, dict):
              name = x['name']
              f = deepcopy(x)
              if 'verbose_name' in x:
                  f['title'] = x['verbose_name']
              if 'title' not in f:
                  f.update(get_grid_column(model, name))
          else:
              raise ValueError("Field should be string or dict type, but {!r} found".format(x))
          fields_list.append(f)
      return fields_list
docs: Get fields info according model class, the fields just like ListView fields definition
      :param fields: A list
      :param meta: if no fields, it'll use meta