I have a django website with a database. On the site, you can add, change, delete information from the database. I made a button that, when clicked, downloads a .csv file. I open it in excel and it looks something like this:
The data set does not matter, I have a different one, I took this one on the Internet for an example.
I want that when I click on the "download report" button, I would create a table at least like in this example:
Is it possible? At the moment, my views.py
contains the following code to get data from the database and download it to an excel spreadsheet:
def export_racks_view(request, id):
response = HttpResponse(content_type='text/csv')
response.write(u'\ufeff'.encode('utf8'))
writer = csv.writer(response, delimiter=';', dialect='excel')
writer.writerow([
'Rack number',
'Name',
'Amount',
'Vendor',
'Model',
'Describe',
'numbering',
'responsible',
'financially responsible person',
'inventory number',
'row',
'place',
'height',
'width',
'depth',
'unit width',
'unit depth',
'rack type',
'place type',
'max load',
'power sockets',
'power sockets UPS',
'external ups',
'cooler',
'updated by',
'updated at',
'room name',
'building name',
'site name',
'department name',
'region name',
])
raw_report = Rack.objects.raw("""select rack.id as id, rack.rack_name, rack.rack_amount, rack.rack_vendor, rack.rack_model, rack.rack_description, rack.numbering_from_bottom_to_top, rack.responsible, rack.rack_financially_responsible_person, rack.rack_inventory_number, rack.row, rack.place, rack.rack_height, rack.rack_width, rack.rack_depth, rack.rack_unit_width, rack.rack_unit_depth, rack.rack_type, rack.rack_place_type, rack.max_load, rack.power_sockets, rack.power_sockets_ups, rack.external_ups, rack.cooler, rack.updated_by, rack.updated_at, room.room_name, building.building_name, site.site_name, department.department_name, region.region_name from rack join room on room.id = rack.room_id_id join building on building.id = room.building_id_id join site on site.id = building.site_id_id join department on department.id = site.department_id_id join region on region.id = department.region_id_id where region.id ="""+str(id)+""";""")
for rack in raw_report:
if rack.numbering_from_bottom_to_top == True:
numbering_from_bottom_to_top = 'Yes'
else:
numbering_from_bottom_to_top = 'No'
if rack.external_ups == True:
external_ups = 'Yes'
else:
external_ups = 'No'
if rack.cooler == True:
cooler = 'Yes'
else:
cooler = 'No'
writer.writerow([
rack.id,
rack.rack_name,
rack.rack_amount,
rack.rack_vendor,
rack.rack_model,
rack.rack_description,
numbering_from_bottom_to_top,
rack.responsible,
rack.rack_financially_responsible_person,
rack.rack_inventory_number,
rack.row,
rack.place,
rack.rack_height,
rack.rack_width,
rack.rack_depth,
rack.rack_unit_width,
rack.rack_unit_depth,
rack.rack_type,
rack.rack_place_type,
rack.max_load,
rack.power_sockets,
rack.power_sockets_ups,
external_ups,
cooler,
rack.updated_by,
rack.updated_at,
rack.room_name,
rack.building_name,
rack.site_name,
rack.department_name,
rack.region_name,
])
response['Content-Disposition'] = 'attachment; filename="racks.csv"'
return response