如何在Django Views.py中将外键字段导出到Excel?

时间:2016-05-16 02:17:18

标签: excel django-models export

出现此错误: - “餐馆”对象没有属性“menu_here__starters”

我正在使用Django-Excel Lib

在我的Models.py

Class Restaurant(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 个答案:

答案 0 :(得分:1)

make_response_from_query_sets获取query_set返回的对象,并将其与列名一起显示,列名应与对象的字段名对应。

column_names就像一个过滤器,只显示您想要的字段名称,但在获取对象后无法进一步查询。因此,有效名称为['name', 'area', 'menu_here']

另一种方法是使用.values()方法查询然后使用excel.make_response_from_records将对象作为带有相关字段的dict。

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"
    )