2016-05-16 68 views
2

收到此錯誤: - '餐廳' 對象有沒有屬性 'menu_here__starters'如何將外鍵字段導出到Django Views.py中的Excel中?

我使用的Django的Excel庫

在我Models.py

類餐廳(models.Model):

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_sets採用由query_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

謝謝!這個答案很簡單! –