我正在尝试使用web2py SQLFORM.grid,但是csv i导出不应用代表,所以即使创建了这样的类,它也会返回ids而不是name

from io import StringIO

class CSVExporter(object):

file_ext = "csv"
content_type = "text/csv"

def __init__(self, rows):
    self.rows = rows

def export(self):
    if self.rows:
        s = StringIO()
        self.rows.export_to_csv_file(s, represent=True)
        return s.getvalue()
    else:
        return ''

然后将export_classes作为

export_classes = dict(csv=(CSVExporter, 'CSV'), json=False, html=False,
                 xml=False, csv_with_hidden_cols=False,
                  tsv_with_hidden_cols=False)

但是,即使在将表示设置为True之后,我仍然使用csv和tsv返回id而不是名称,使用python3和最新的web2py 2.17.2-stable

在我的模型中有一些表格

SPECIAL = ('True', 'False')
db.define_table('driver',
            Field('name', 'string'),
            Field('password', 'password', readable=False),
            Field('company_id','string'),
            Field('license_number', 'string'),
            Field('email', requires=IS_EMAIL()),
            Field('status', default='Available'),
            Field('phone'),
            Field('details', 'text'),
            Field('self_driver','string',requires=IS_IN_SET(SPECIAL, multiple=False), default=SPECIAL[1]),
            Field('current_trip', readable=False, writable=False),
            Field('current_trip_type', readable=False,writable=False),
            format='%(name)s',
            migrate=False)
  db.driver.id.readable=False
  vehicle_status = ('Available', '')
  db.define_table('vehicle',
            Field('reg_number', 'string', requires=IS_NOT_EMPTY()),
            Field('make', 'string'),
            Field('current_mileage', 'integer', requires=IS_NOT_EMPTY(), default=0),
            Field('status', default='Available'),
            Field('description', 'text'),
            format='%(reg_number)s',
            migrate=False)

   db.vehicle.id.readable=False

   db.define_table('company',
            Field('name', 'string'),
            Field('description', 'text'),
            format='%(name)s',
            migrate=False)
 db.company.id.readable = False

 TRIP_TYPE = ('Airport', 'Town Run', 'Up Country Trip', 'Out of Country Trip')
 db.define_table('trip',
            Field('comp_id', 'reference company'),
            Field('vehicle_id', 'reference vehicle'),
            Field('driver_id', 'reference driver'),
            Field('start_date'),
            Field('departure'),
            Field('start_mileage', 'integer'),
            Field('end_date'),
            Field('destination'),
            Field('end_mileage', 'integer'),
            Field('status', default='In_Progress'),
            Field('trip_type', requires=IS_IN_SET(TRIP_TYPE, multiple=False), default=TRIP_TYPE[0]),
            Field('signature', readable=False,writable=False),
            Field('image_flag', 'integer', default=0, readable=False),
            Field('signature_path', 'upload', uploadfolder=os.path.join(request.folder, 'static/images/signatures'),
                  autodelete=True, readable=False),
            Field('departure_geo_lat', readable=False,writable=False),
            Field('departure_geo_long', readable=False,writable=False),
            Field('destination_geo_lat', readable=False,writable=False),
            Field('destination_geo_long', readable=False,writable=False),
            migrate=False)