Soy bastante nuevo en Django y Python. Tengo un sitio web de gestión de inventario. Estoy tratando de actualizar varios valores en una base de datos. El usuario debe poder ingresar valores de existencias actualizados y debe actualizar el valor de existencias de cada artículo que se haya enviado. imagen de pagina
Intenté "elemento[{{elemento.id}}]" para crear una lista, pero no estoy seguro de cómo usar esta lista o cómo actualizar varias filas. Supongo que necesito recopilar todos los valores y claves de la plantilla y en POST ejecutar un ciclo y actualizar las filas relevantes por ID.
modelo
<form action="" method="post"> {% csrf_token %} {% for item in items %} <tr> <td>{{item.name}}</td> <td>{{item.description}}</td> <td>{{item.buyprice}}</td> <td>{{item.sellprice}}</td> <td><input type="number" value="{{item.instock}}" name="item[{{item.id}}]"></td> </tr> {% endfor %} <tr> <td><input type="submit" value="Update"></td> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> </form>vista
def stockUpd(request): if request.method == 'GET': items = Item.objects.filter(user=request.user) context = { 'items':items } return render(request,'stock/stockupd.html',context); #if request.method == 'POST':Hacer
<input type="number" value="{{item.instock}}" name="item_{{item.id}}">Entonces
if request.method == 'POST': data = request.POST.dict() data.pop('csrfmiddlewaretoken', None) for i in data.items(): obj = Item.objects.get(id=i[0].split("_")[1]) if not str(obj.instock) == str(i[1]): #here check int or char datatype since 1 not equal "1" obj.instock = i[1] obj.save()