Python как выполнить итерацию из массива объектов и использовать значения ключей для обновления нескольких записей одновременно

#python #django #python-3.x #loops #iteration

#python #django #python-3.x #циклы #итерация

Вопрос:

Python как выполнить итерацию из массива объектов и использовать значения ключей для обновления нескольких записей одновременно. Я хотел обновить несколько строк в таблице, где companyid = company и applicant_id = заявитель, поскольку вы можете видеть значения компании и заявителя в json и установить attached_document_ins.is_viewed равным проверяемому значению на основе идентификатора задачи. https://imgur.com/a/nttq6XT (строки таблицы)

код

 def post(self, request):
    data = request.data
    print("Response Data :" , data)
    try:

         for item in data['tasklist']:
            company = item['company']
            applicant = item['applicant']
            hey = item['checked']

        attached_document_ins = DocumentTask.objects.filter(company=company , applicant = applicant)
        for attached_document_ins in attached_document_ins:
            attached_document_ins.is_viewed = True
        attached_document_ins.save()
        return Response("Success", status=status.HTTP_200_OK)
    except DocumentTask.DoesNotExist:
        return Response("Failed.", status=status.HTTP_400_BAD_REQUEST)
  

данные

 {
   'tasklist':[
        {
            'company':6,
            'checked':True,
            'files':[

            ],
            'applicant':159,
            'id':35,
            'task':'s'
        },
        {
            'company':6,
            'checked':True,
            'files':[

            ],
            'applicant':159,
            'id':36,
            'task':'ss'
        },
        {
            'company':6,
            'checked':True,
            'files':[

            ],
            'applicant':159,
            'id':37,
            'task':'sss'
      }
   ]
}
  

Комментарии:

1. Какие поля вы хотите обновить? И при каком условии?

Ответ №1:

Вы можете запросить set.update для обновления нескольких строк

 DocumentTask.objects.filter(company=company , applicant = applicant).update(is_viewed=True)