从一个模型获取数据到另一个Django / Python

时间:2016-12-20 16:39:48

标签: python django for-loop django-models append

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

我的模型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 个答案:

答案 0 :(得分:1)

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

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

另见Improving performance of django DB query