2011-04-05 48 views
1

我正在使用geraldo/reportlab在我的數據庫上生成部分報告。 Reportlab只允許我一次執行一個查詢集(就我的理解而言)。結果,我的報表的某些方面從ManyToMany字段和ForeignKeys中抽出。Django - 從geraldo報告中刪除多餘的unicode符號

例如,類band_detail在reports.py:

ObjectValue(attribute_name='number', left = 9*cm, get_value=lambda instance: Drawing.objects.filter(number=DrawingRevision.objects.filter(part__id=instance.id).values('drawing')).values_list('number', flat=True)) 

此作爲顯示:

[u'1', u'2', u'3'] 

...等等。我不知道如何擺脫unicode符號「你」。我無法遍歷ObjectValue中的lambda函數。我嘗試覆蓋geraldo類和定義,如do_before_generate(),但沒有運氣。

有關如何解決此問題的任何想法?提前致謝!

回答

1

嘗試:

[s.encode() for s in 
ObjectValue(attribute_name='number', 
      left = 9*cm, 
      get_value=lambda instance: 
       Drawing.objects.filter(number=DrawingRevision.objects 
              .filter(part__id=instance.id) 
              .values('drawing') 
            ).values_list('number', flat=True) 
      ) 
] 

ObjectValue(attribute_name='number', 
      left = 9*cm, 
      get_value=lambda instance: 
      [ n.encode() for n in 
       Drawing.objects.filter(number=DrawingRevision.objects 
              .filter(part__id=instance.id) 
              .values('drawing') 
            ).values_list('number', flat=True) 
      ] 
      ) 

這應該給你:

['1', '2', '3'] 
+0

也可以拼寫地圖(unicode.encode,...) – 2011-04-05 18:14:52

+0

不幸的是,我無法遍歷ObjectValue。但是,我可以在geraldo中遍歷band_detail.elements,其中元素是ObjectValue返回的元素。問題是,當我去遍歷band_detail.elements時,對象類型是None。出於某種原因,他們還沒有被創建的時間geraldo命中進程do_after_generate。任何有關在geraldo中使用哪些函數的想法,以便我可以遍歷我的元素? – Zach 2011-04-05 18:54:08

+0

爲什麼不在lambda中的value_list上應用編碼函數? – manji 2011-04-05 19:14:14