Function frappe.get_list does not get record's data from Child Table. Why?

Hello,

I am using the function frappe.get_list to get all the child table records of my custom DocType My Work Order. The child table name is My Work Order Operations.

The number of rows returned are identical but the fields of each row are blank without data.

Why?

TIA

Yogi Yang

Can you share the code you’re using? JS or Python? (If it’s Python, I believe you need to use get_all to poll child tables directly)

Hello @peterg

Here is the Python code.

my_work_order = frappe.get_doc("My Work Order", my_work_order)
    # Get the Processes from Work Order
    my_work_order_processes = frappe.get_list("My Work Order Operations", {"parent": my_work_order.name})
 
    my_route_card = frappe.new_doc("My Route Card")
    my_route_card.date = datetime.datetime.now()
    my_route_card.my_work_order_num = my_work_order.name
    my_route_card.customer_code = my_work_order.customer_code
    my_route_card.item_to_mfg = my_work_order.production_item
    my_route_card.qty = my_work_order.qty

    for spc in my_work_order_processes:
        my_route_card.append("operations",{
            "operation": spc.operation,
            "workstation": spc.workstation,
            "source_warehouse": spc.source_warehouse,
            "target_warehouse": spc.target_warehouse,
            "perform_qc": spc.perform_qc,
            "time_in_mins": spc.time_in_mins,
            "quality_inspection_template": spc.quality_inspection_template
        })
    my_route_card.flags.ignore_permissions = 1
    my_route_card.flags.ignore_mandatory = 1
    my_route_card.save()
    frappe.db.commit()

TIA

Yogi Yang

Did you try with get_all?

Hello,

I have not tried that. Will give it a try and update you here.

TIA

Yogi Yang

Hello @peterg,

To update you get_all is not working for me.
Calling the function does not generate any errors but I am not able to iterate through all the rows.

TIA

Yogi Yang

You have to identify the fields you want pulled. get_all and get_list return the name only by default. fields=['*'] will pull everything.

Hello @YogiYang,
why not use my_work_order.fieldname_of_child (it’s a list contain all children) if you already use get_doc

1 Like

Hello,

I don’t understand as to how I can iterate through each items if I use get_doc?

Can you provide me with a sample to follow?

TIA

Yogi Yang

Hello @peterg,

Yes, this works!!

Thanks a lot. Actually as this was not working for me I had resorted to using SQL query. But now I will convert to using get_all.

TIA

Yogi Yang

look at your my_work_order variable in the console. It will have a property called “operations” (or whatever you named the child table field). This property will contain all of the data you want. No need for a separate get_list/get_all operation.

3 Likes