Bagaimana untuk menghantar berbilang senarai dari ajax ke Django
P粉068174996
P粉068174996 2024-04-03 23:20:06
0
1
558

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粉068174996
P粉068174996

membalas semua(1)
P粉680487967

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

Javascript

$.ajax({
    type: "POST",
    url: "{% url 'sales-item' %}",
    data:{
      multiple_list: JSON.stringify(selected_items),
      item_size: selected_items.length,
    }
}).done(function(data){...

Python

stock_list = json.loads(request.POST.get('multiple_list'))

print(type(stock_list))
# 

print(stock_list)
# [
#   {'stock_id': 5, 'quantity': 15},
# ]

Sunting

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)
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan