2016-05-16 40 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

谢谢!这个答案很简单! –