2016-05-16 7 views
2

はこのエラーを取得: - 'レストラン' オブジェクトが無属性 'menu_here__starters'Djangoで外部キーフィールドをExcelにエクスポートする方法Views.py?

を持っている私は私のModels.py

級レストラン(models.Model)でジャンゴ・エクセルのLib

を使用しています:

name = models.CharField(max_length=20) 
    area = models.CharField(max_length = 30) 
    menu_here = models.ForeignKey(Menu) 

クラスメニュー(models.Model):

starters = models.CharField(max_length = 50) 
    desserts = models.CharField(max_length = 50) 
私Views.py

DEF download_excel_4(リクエスト)で

query_set = Restaurant.objects.all() # Foreign column is Menu 
column_names = ['menu_here__starters','menu_here__desserts' ] 
return excel.make_response_from_query_sets(
     query_set, 
     column_names, 
     'xls', 
     file_name="Restaurant With Complete Menu Database" 
     ) 

答えて

1

make_response_from_query_setsquery_setによって返されたオブジェクトを取得し、オブジェクトのフィールド名と対応する必要があり、列名と一緒に表示します。

column_namesは、必要なフィールド名のみを表示するフィルタのように機能しますが、オブジェクトが取得された後はそれ以上問い合わせることはできません。したがって、有効な名前は['name', 'area', 'menu_here']です。

代替方法は、.values()メソッドを使用してクエリを実行してから、excel.make_response_from_recordsを使用して、関連フィールドを持つ辞書としてオブジェクトを取得することです。

query_record = Restaurant.objects.all().values('name', 'area', 'menu_here__starters', 'menu_here__desserts') 
return excel.make_response_from_records(
    query_record, 
    'xls', 
    file_name="Restaurant With Complete Menu Database" 
    ) 
+1

ありがとうございました!この回答はとても簡単です! –

関連する問題