2016-12-20 6 views
0

Я создаю приложение с python и Django. У меня есть несколько моделей, но мне нужно получить данные от одной модели к другой (отношение может быть сделано с SOSS (номер заказа клиента). У меня есть логика для этого, но не такая эффективная, как хотелось бы. занимает около 5-6 минут, чтобы обработать данные.Получить данные из одной модели в другую Django/Python

Моя модель 1 имеет номер отношения (po_number) и связана с моделью 2 (ее называют номер планирования). Требуется много времени, потому что модель 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

ли ваш model1 и model2 связаны с models.ForeignKey области (относящейся po_number и planning_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

Есть ли соотношение 1: 1 или 1: много между Model1 и Model2? –

+0

Im using Mysql btw – Deluq

Смежные вопросы