当模型中有外键时,导出非常慢,当我排除外键没有问题时,它开始快速下载。这里的问题可能是什么?谢谢!
我的代码是这样的
resources.py
class InvoiceResource(resources.ModelResource):
class Meta:
model = Invoicesviews.py
def export_invoice(request):
person_resource = InvoiceResource()
dataset = person_resource.export()
response = HttpResponse(dataset.xlsx, content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename="invoices.xlsx"'
return responsemodels.py
class Invoices(models.Model):
store_code = models.ForeignKey(MasterData, on_delete=models.CASCADE, db_column='Store Code', blank=True, null=True, verbose_name='Store Code')
erp_id = models.CharField(db_column='ERP ID', max_length=200, blank=True, null=True, verbose_name='ERP ID')
store_name = models.CharField(db_column='Store Name', max_length=200, blank=True, null=True, verbose_name='Store Name')发布于 2018-05-21 21:20:31
我认为你应该使用select_related
class ModelA(models.Model):
fk = models.Foreingkey(ModelB)
class ModelB(models.Model):
title = models.CharField(max_lenght=20)如果您使用:
a_objects = ModelA.objects.all()
for obj in a_objects:
fk = obj.fk每个对象都需要对数据库进行查询
但是如果你使用
a_objects = ModelA.objects.all().select_related('fk')
for obj in a_objects:
fk = obj.fk在这种情况下,只有一次对数据库的查询。
有关更多信息,请访问https://docs.djangoproject.com/en/2.0/ref/models/querysets/
class InvoiceResource(resources.ModelResource):
def get_queryset(self):
return super().get_queryset().select_related('store_code')
class Meta:
model = Invoiceshttps://stackoverflow.com/questions/50449337
复制相似问题