1

geraldo / reportlabを使用して、データベースにパーツレポートを生成しています。Reportlabでは、一度に1つのクエリセットしか実行できません(私が理解しているように)。その結果、レポートの特定の側面が、ManyToManyフィールドとForeignKeysから取得されます。

たとえば、reports.pyのクラスband_detail:

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記号「u」を取り除く方法がわかりません。ObjectValueのラムダ関数を反復処理できません。geraldoクラスとdo_before_generate()などの定義をオーバーライドしようとしましたが、うまくいきませんでした。

これを修正する方法について何かアイデアはありますか?前もって感謝します!

4

1 に答える 1

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']
于 2011-04-05T18:06:30.073 に答える