Django - удаление посторонних символов юникода из отчетов геральдо - PullRequest
1 голос
/ 05 апреля 2011

Я использую geraldo / reportlab для создания отчетов по деталям в моей базе данных. Reportlab позволяет мне выполнять только один набор запросов за раз (насколько я понимаю). В результате некоторые аспекты моего отчета извлекаются из полей ManyToMany и ForeignKeys.

Например, класс 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 "U". Я не могу перебрать свою лямбда-функцию в ObjectValue. Я попытался переопределить классы и определения геральдо, такие как do_before_generate (), но безуспешно.

Есть идеи, как это исправить? Заранее спасибо!

1 Ответ

1 голос
/ 05 апреля 2011

Попробуйте:

[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']
...