Вывод динамического поля Django как CSV - PullRequest
0 голосов
/ 05 января 2012

Привет, я пишу представление Django, которое генерирует CSV-файл.Довольно просто.На мой взгляд, у меня есть:

def mysearch(request, exportCSV):
    ...
    if 'q' in request.GET or exportCSV:
        results_list = request.session['results_list']
    ...
    if exportCSV:
        response = HttpResponse(mimetype='text/csv')
        response['Content-Disposition'] = 'attachment; filename=myfile.csv'
        writer = csv.writer(response)

        # write field titles                
        writer.writerow(['name_of_firstfield', 'name_of_secondfield', ... ,])

        for row in results_list: 
            # write row content
            writer.writerow([row.firstfield, row.secondfield, ... , ])
        return response     

Здесь на самом деле есть два вопроса:

  1. Как вывести имя поля модели в виде текста, чтобы я мог написатьзаголовки полей в первой строке.

  2. Как можно избежать указания каждого поля (учитывая, что у меня много полей) для обеих строк.Я в основном хочу сказать для каждой строки: выводить каждое имя поля, а затем выводить каждый фрагмент данных.

Могу ли я как-нибудь использовать getattr здесь ?.

1 Ответ

2 голосов
/ 05 января 2012

Взгляните на этот фрагмент , например, вы можете получить доступ к именам полей моделей через model._meta.fields, и вы можете использовать getattr(), чтобы получить значение поля для данного объекта. например,

fields = ct_object._meta.fields

writer = csv.writer(response)
writer.writerow([field.column for field in fields])

for object in objects_to_export:
    writer.writerow([getattr(object, field.name) for field in fields])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...