最近 ascii 與 unicode 的問題也不斷出現,有些東西利用套件抓回來就 error ,這個部分只好先保留,先把我要寫出的檔案轉出來好了。
django 可以自訂在 admin 當中針對資料表要做的功能,放在 table list 下拉選單裡面。
admin.py
遇到 table 中繁體字的欄位,需要 UNICODESTRING.encode('utf-8','ignore') 來轉換一下。
from MYAPP.models import *
from django.contrib import admin
from django.contrib.auth.models import User
import csv
from django.http import HttpResponse
class MYMODELADMIN(admin.ModelAdmin):
list_display = ('FIELD1','FIELD2')
readonly_fields = list_display
actions = ['GETFILE']
def GETFILE(self, request, queryset):
response = HttpResponse(mimetype='text/csv')
response.write('\xEF\xBB\xBF')
response['Content-Disposition'] = 'attachment; filename="FILENAME.csv"'
writer = csv.writer(response)
writer.writerow(['DATA1','DATA2'),'DATA3'])
for i in queryset:
writer.writerow([i.DATA1.encode('utf-8','ignore'),i.DATA2.encode('utf-8','ignore'),i.DATA3.encode('utf-8','ignore')])
return response
get_winner_file.short_description = u'下載檔案'
readonly 則是在樣板中顯示為唯讀。
選完功能,會自動下載熱騰騰的csv了。
0 留言