python3 TypeError: 'bool' object is not callable

Не понимаю почему я не могу выполнить тут проверку типа данных...

def findDitailInDb(order_id, data, type=False):
    """
    data - то что отрыгнул нам алгоритм раскроя(все пулы по одному ордеру)
    дополняем данные о раскрое доп. информацией
    """
    new_data = copy.deepcopy(data)
    print(f"new_data copy data: {new_data}")
    for i in new_data.keys():
        if (new_data.get(i) != None):
            print(f"new_data.get(i).get('raskroy') {new_data.get(i).get('raskroy')}")
            new_data.get(i).update({'raskroy':{}})
    print(f"findDitailInDb new_data before clean: {new_data}")

    for i in data.keys():
        data2 = data.get(i)
        if (data2 != None):
            data3 = data2.get('raskroy')
            korobka_name = data2.get('korobka_name')
            details_list = []
            print(f"data3: {data3}")
            for i2 in data3:
                print(f"i2: {i2}")
                #i2 = helpers.delete_empty_sublist(i2)
                #print(f"clear i2: {i2}")
                profil_number = 1
                for i3 in i2:
                    detail_and_profil_sublist = []
                    print(f"i3: {i3}")
                    if type(i3) != int:
                        for i4 in i3:
                            print(f"i4: {i4}")
                            print(f"findDitailInDb type: {type}")
                            #time.sleep(10)
                            detail = OrderDetails.objects.filter(type=type, size=i4, order=order_id, used=False, order_item__korobka__name=korobka_name).first()
                            print(f"Найденая деталь: {detail}")
                            detail.used = True
                            detail.save()
                            detail_dict = {
                                "detail_id": detail.id,
                                "position_in_order": detail.order_item.position_in_order,
                                "size": detail.size,
                                "type": detail.type,
                                "zapils_count": detail.zapils_count,
                            }
                            detail_and_profil_sublist.append(detail_dict)
                        print(f"detail_and_profil_sublist: {detail_and_profil_sublist}")
                        detail_and_profil_dict = {'profil_number' : profil_number, 'details' : detail_and_profil_sublist}
                        print(f"detail_and_profil_dict: {detail_and_profil_dict}")
                        details_list.append(detail_and_profil_dict)
                        profil_number += 1
                    else:
                        continue

                new_data.get(i).update({'raskroy': details_list})

    print(f"findDitailInDb data: {data}")
    print(f"findDitailInDb new_data: {new_data}")
    order = Order.objects.get(id = order_id)
    order.raskroy_json = new_data
    order.save()
    return new_data

Ошибка:

    if type(i3) != int:
TypeError: 'bool' object is not callable

Как сделать правильно?


Ответы (1 шт):

Автор решения: Sonic Park

Привет для этого уже есть такое решение:

if isinstance(1, int):

В вашем случае:

if not isinstance(i3, int):

Вы можете почитать подробнее тут: https://docs.python.org/3.8/library/functions.html#type

→ Ссылка