Rumah > Soal Jawab > teks badan
Saya mempunyai masalah, saya ingin mendapatkan semua data daripada list
jadi saya ingin mengulang setiap data dalam item yang dipilih dan memasukkannya ke dalam pangkalan data,
Pada masa ini apabila saya mencetak ['[object Object]', '[object Object]']
, ia mengembalikan data seperti ini,
Bagaimana untuk memasukkan data ini satu demi satu? Atau hanya mencetaknya satu persatu?
Saya ada senarai ini yang terpilih_item Saya gelungkan data dan kemudian hantar ke 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); }
Apabila konsol terpilih_item adalah seperti ini
Jadi sekarang saya mahu menghantar senarai ini kepada Django menggunakan ajax
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)
Beginilah rupa apabila dicetak
['[object Object]', '[object Object]']
Kod dikemas kiniBagaimana untuk menggelung data? Inilah yang saya cuba tetapi ia tidak menggambarkan data sama sekali
multiple_list: JSON.stringify(selected_items)
view.py
out_items = request.POST.get('multiple_list') for i in out_items: print(out_items1[i])
**Bagaimana untuk mencetak atau memasukkan ke dalam pangkalan data?
P粉6804879672024-04-04 14:29:06
Apabila anda melaksanakan selected_items.join(',')
时,您正在获取 {'stock_id': 5, 'quantity': 15}
的 __str__
(或等效的 js),它恰好是 [object Object ]
Jadi saya cadangkan hanya menggunakan Json, yang akan mengekod keseluruhan kamus senarai bersarang dan akan dimuatkan sebagai kamus senarai biasa dalam 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}, # ]
Ya! , anda hanya melingkarinya seperti kamus senarai bersarang biasa
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'] )
Tetapi! Jika anda tahu setiap projek yang akan anda buat, saya syorkan menggunakan 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)
&Sorotan Tambahan
Ini semua berfungsi dengan cara yang sama! (Sangat mudah untuk mencipta penapis secara dinamik ;))
# 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)