cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menghantar berbilang senarai dari ajax ke Django

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粉068174996P粉068174996228 hari yang lalu559

membalas semua(1)saya akan balas

  • P粉680487967

    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

    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)
    

    balas
    0
  • Batalbalas