首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有外键时,django-import-export速度较慢

有外键时,django-import-export速度较慢
EN

Stack Overflow用户
提问于 2018-05-21 20:51:13
回答 1查看 986关注 0票数 1

当模型中有外键时,导出非常慢,当我排除外键没有问题时,它开始快速下载。这里的问题可能是什么?谢谢!

我的代码是这样的

resources.py

代码语言:javascript
复制
class InvoiceResource(resources.ModelResource):
  class Meta:
      model = Invoices

views.py

代码语言:javascript
复制
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 response

models.py

代码语言:javascript
复制
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')
EN

回答 1

Stack Overflow用户

发布于 2018-05-21 21:20:31

我认为你应该使用select_related

代码语言:javascript
复制
class ModelA(models.Model):
    fk = models.Foreingkey(ModelB)

class ModelB(models.Model):
    title = models.CharField(max_lenght=20)

如果您使用:

代码语言:javascript
复制
a_objects = ModelA.objects.all()

for obj in a_objects:
    fk = obj.fk

每个对象都需要对数据库进行查询

但是如果你使用

代码语言:javascript
复制
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/

代码语言:javascript
复制
class InvoiceResource(resources.ModelResource):

  def get_queryset(self):
      return super().get_queryset().select_related('store_code')
  class Meta:
      model = Invoices
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50449337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档