目前有兩種比較推薦的方法:
- 重寫export方法在export方法中將表頭及數據造出來,只需要將數據寫入列表中即可,推薦使用sql,連表查詢比較靈活,需要注意的是表頭要和數據一一對應,不然報錯:
class IncomingValuableGroupViewResource(resources.ModelResource):
class Meta:
model = IncomingValuableGroupView
# fields = ('id', 'author_name',)
def export(self, queryset=None, *args, **kwargs):
headers = ['序號', '日期', '清點SKU種類', '清點SKU數量', '質檢SKU種類', '質檢SKU數量', '加工SKU種類', '加工SKU數量', '上架SKU種類', '上架SKU數量',
'目的倉庫']
data = tablib.Dataset(headers=headers)
from django.db import connection
cr = connection.cursor()
sql = """
select A.id,
A.create_date_without_time,
A.count_product_check,
A.sum_actual_check_qty,
A.count_product_quality,
A.sum_actual_quality_qty,
A.count_product_processing,
A.sum_actual_processing_qty,
A.count_product_shelves,
A.sum_actual_shelves_qty,
B.name as location_name
from incoming_valuable_group_view as A,
stock_location as B
where A.location_id = B.id;
"""
cr.execute(sql)
res = cr.fetchall()
for insert_data in res:
data.append(insert_data)
self.after_export(queryset, data, *args, **kwargs)
return data
- 我目前沒有使用過,但也挺簡單的,不需要重寫
export
方法,直接在數據庫中創建視圖,並在項目中創建相應的模型,視圖,按照常規的文件下載方式設置即可,這里比較麻煩的是需要重新創建模型,但是以后維護方便,以后加減字段,調整邏輯比較方便.