我有一個問題,我想從 list
獲取所有數據,所以我想循環所選項目中的每個數據並將其插入資料庫,
目前,當我列印 ['[object Object]', '[object Object]']
, 時它會傳回這樣的數據,
如何將這些數據一一插入?或只是一張一張列印?
我有這個列表,它是 selected_items 我循環數據,然後將其傳遞給 ajax
selected_items = []; for (var i = 0; i < checkBoxes.length; i++) { var selected_obj ={ stock_id: checkBoxes[i].id, quantity: row.cells[3].innerHTML } selected_items.push(selected_obj); }
當控制台 selected_items 時就像這樣
所以現在我想使用ajax將這些清單傳遞給django
console.log(selected_items); $.ajax({ type: "POST", url: "{% url 'sales-item' %}", data:{ multiple_list: selected_items.join(','), item_size: selected_items.length } }).done(function(data){...
views.py
#out_items = request.POST.getlist('multiple_list[]') print(out_items)
印出來是這樣的
#['[object Object]', '[object Object]']
更新程式碼如何循環資料?這是我嘗試過的,但它根本沒有反映數據
multiple_list: JSON.stringify(selected_items)
view.py
#out_items = request.POST.get('multiple_list') for i in out_items: print(out_items1[i])
**如何列印或插入資料庫?
P粉6804879672024-04-04 14:29:06
當您執行selected_items.join(',')
時,您正在取得{'stock_id': 5, 'quantity': 15}
的__str__
(或等效的js),它恰好是[object Object ]
所以我建議只使用 Json,它將對整個嵌套列表字典進行編碼,並將作為 python 中的普通列表字典加載
$.ajax({ type: "POST", url: "{% url 'sales-item' %}", data:{ multiple_list: JSON.stringify(selected_items), item_size: selected_items.length, } }).done(function(data){...
stock_list = json.loads(request.POST.get('multiple_list')) print(type(stock_list)) #print(stock_list) # [ # {'stock_id': 5, 'quantity': 15}, # ]
是的! ,你只需像普通的嵌套列表字典一樣循環它
stock_list = json.loads(request.POST.get('multiple_list')) for stock_list_item in stock_list: obj, was_created_bool = MyModel.objects.get_or_create( stock_id=stock_list_item['stock_id'], quantity=stock_list_item['quantity'] )
但是! 如果您知道您將要建立每個項目,我建議使用 bulk_create
stock_list = json.loads(request.POST.get('multiple_list')) bulk_create_list = [] for stock_list_item in stock_list: bulk_create_list.append( MyModel( # Note: NO .object stock_id=stock_list_item['stock_id'], quantity=stock_list_item['quantity'] ) ) # Creates all items in one query MyModel.objects.bulk_create(bulk_create_list)
&額外花絮
這些的工作原理都是一樣的! (動態建立篩選器非常方便;))
# setup stock_list_item = {'stock_id': 5, 'quantity': 15} # ---- MyModel.objects.get_or_create( stock_id=stock_list_item['stock_id'], quantity=stock_list_item['quantity'] ) # == MyModel.objects.get_or_create(**{'stock_id': 5, 'quantity': 15}) # == MyModel.objects.get_or_create(**stock_list_item)