2013-09-16 51 views
-1

我需要從用戶選擇的djangos'管理頁面中打印突出顯示的記錄。 我已經添加了打印選定記錄的操作,但似乎無法繼續。輸出在django中突出顯示的記錄更改管理頁面

我已經測試了reportlab在我的'print_member'行爲中創建'hello world'pdf,它在admin.py &中運行正常。

我的問題是如何抓住'剛剛突出顯示的記錄選擇打印'並將該查詢集數據提供給reportlab畫布調用。

我無法在django文檔中的任何地方找到如何從管理頁面中選擇一條記錄到在HttpResponse調用的響應部分中實際返回該記錄。

我當前的代碼是:

def print_member(self, request, queryset): 
     rows_updated = queryset.update(status = 'p') 
     if rows_updated == 1: 
      message_bit = "member detail was collected successfully !!" 
     self.message_user(request, "%s detailed ready for printing!!" % message_bit) 
     response = HttpResponse(content_type = 'application/pdf') 
     response[ 'Content-Disposition' ] = 'attachment; filename="member_label.pdf"' 
     p = canvas.Canvas(response) 
     details = list(request) 
     p.drawString(100,100,detail_string) 
     p.showPage() 
     p.save() 
     return response 

我的測試代碼admin.py如下: - DEF print_member(個體,請求,查詢集): rows_updated = queryset.update(狀態= 'p') if rows_updated == 1: message_bit =「成員詳細信息已成功收集!!」 self.message_user(request,「%s準備好打印!!」%message_bit) response = HttpResponse(content_type ='application/pdf') response ['Content-Disposition'] ='attachment;文件名= 「member_label.pdf」」 P = canvas.Canvas(響應) 細節=列表(請求) p.drawString(100,100,detail_string) p.showPage() p.save() 返回響應

+0

我是否正確理解您已使用管理員操作?如果是這樣,你能顯示你現在使用的代碼嗎?否則,首先看到掃羅的答案。 – BakaKuna

+0

所以我所問的是我如何從queryset.update(如果這是正確的,因爲我沒有用實際狀態更新模型='p')來填充reportlab畫布調用的'細節'。如果這不是打印在django管理頁面中選擇的記錄的可接受的方式,那麼你會怎麼做? – gatesy

回答

0

我的建議是使用管理員操作。 https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/

那裏你會得到queryset。然後只是遍歷這個queryset並做任何你想要的。

+0

嗨Saul,thx,但作爲django的內部工作的新手我不明白如何從管理頁面獲取選定的記錄。即:我需要看看如何將查詢集數據放入「畫布」調用中。 – gatesy

+0

終於得到它與迭代自queryset保存成員姓氏,我只需要做一些SQL來獲取該姓氏的記錄,所以thx的提示。 – gatesy