2016-12-20 106 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

相關問題