2016-12-20 70 views
0

我正在用python和Django构建一个应用程序。我有几个模型,但是我需要从一个模型到另一个模型的数据(这个关系可以用一个SOSS(销售订单号)来实现,我确实有这样的逻辑,但并不像我想要的那样高效。需要大约5-6分钟来处理数据从一个模型到另一个模型获取数据Django/Python

我的模型1具有关系编号(po_number)并且与模型2(称为planning_number)相关它需要很长时间,因为模型2具有大约93,000个数据。线

这是我的逻辑:

def import_withtimes(request): 
    print "importando With Times a ots report" 
    po_cache = list() 
    for item in Model1.objects.all(): 

     if item.po_number in po_cache: 
      continue 

     withtimes = Model2.objects.filter(planning_order=item.po_number) 
     for wi in withtimes: 
      po_cache.append(wi.planning_order) 
      item.wms = wi.wms_order 
      item.status = wi.shipment_status 
      item.aging = wi.status_date 
      item.carrier = wi.service_level 
      item.add_date = wi.order_add_date 
      item.asn_validation = wi.asn_sent_time 
      item.docs_add_date = wi.docs_received_time 
      item.save() 

我的问题是:有没有办法更有效地反映一个模型到另一个数据

回答

1

是您的model1model2相关的models.ForeignKey字段(相关的po_numberplanning_order)?然后您可以使用QuerySet来获取相关对象。

您使用的是哪种后端数据存储?它是否在相关领域有索引?查看模型定义相关字段中的db_index=True选项(https://docs.djangoproject.com/en/1.8/ref/models/fields/#db-index)。

另见Improving performance of django DB query

+0

它们不是由一个ForeignKey关系,我应该声明那些作为一种独特的钥匙吗?它会改善关系? – Deluq

+0

Model1和Model2之间是否存在1:1或1:多的关系? –

+0

林使用MySQL顺便说一句 – Deluq

相关问题