Maison > Questions et réponses > le corps du texte
J'ai un problème, je veux obtenir toutes les données de list
donc je veux parcourir chaque donnée de l'élément sélectionné et l'insérer dans la base de données,
Actuellement, lorsque j'imprime ['[object Object]', '[object Object]']
, il renvoie des données comme celle-ci,
Comment insérer ces données une à une ? Ou simplement les imprimer un par un ?
J'ai cette liste qui est selected_items Je boucle les données puis je les transmets à 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); }
Quand la console selected_items est comme ça
Alors maintenant, je veux transmettre ces listes à Django en utilisant 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)
Voici à quoi cela ressemble une fois imprimé
['[object Object]', '[object Object]']
Code mis à jourComment boucler les données ? C'est ce que j'ai essayé mais cela ne reflète pas du tout les données
multiple_list: JSON.stringify(selected_items)
view.py
out_items = request.POST.get('multiple_list') for i in out_items: print(out_items1[i])
**Comment imprimer ou insérer dans la base de données ?
P粉6804879672024-04-04 14:29:06
Quand vous exécutez selected_items.join(',')
时,您正在获取 {'stock_id': 5, 'quantity': 15}
的 __str__
(或等效的 js),它恰好是 [object Object ]
Je recommande donc d'utiliser simplement Json, qui encodera l'intégralité du dictionnaire de liste imbriquée et sera chargé comme un dictionnaire de liste normal en 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}, # ]
Oui ! , vous faites simplement une boucle dessus comme un dictionnaire de liste imbriquée normal
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'] )
Mais ! Si vous connaissez chaque projet que vous allez créer, je vous recommande d'utiliser 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)
&Points forts supplémentaires
Ceux-ci fonctionnent tous de la même manière ! (C'est très pratique pour créer des filtres dynamiquement ;))
# 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)