Ciao a tutti!
Sto programmando un carrello per un e-commerce.
Devo fare in modo che ogni volta che si apra il carrello venga eseguita una funzione che controlli che tutti i prodotti nel carrello siano ancora disponibili (controllando lo stoccaggio). Ora qui il problema:
Ci possono essere nel carrello più prodotti uguali. Mi spiego: se aggiungo prima un prodotto A e poi dopo un po' di nuovo il prodotto A, nel carrello ci saranno 2 Prodotti A (e non 1 con quantità 2), questo per la natura dell'ecommerce.
Quindi prima di controllare lo stoccaggio devo assicurarmi che nel carrello non ci siano 'doppioni' e se si invece come fare?
Sto cercando di risolvere creando una lista_check ossia una lista in cui vengono messi tutti i prodotti già controllati e una lista 'più_prodotti' a cui vengono aggiunti tutti i prodotti con lo stesso Id-prodotto (per poi fare un ulteriore check dopo su tutti i prodotti nella lista 'più_prodotti' e eventualmente eliminare o modificare la quantità di questi ultimi in base alla disponibilità in magazzino). Bene a scriverlo in italiano ma non riesco a tradurre quest'ultimo paragrafo in Python.
Mi sto complicando la vita ? Vi viene un metodo più facile?
Se fosse invece questa l'unica strada percorribile non riesco comunque a scriverla in codice (help me! )
Ecco il Codice scritto fino ad ora: (anche per chi non è esperto di Python dovrebbe essere Facile da intendere)
django framework--based
sono fermo fin dove non è commentato.
quelle istruzioni commentate sono un metodo che funziona ma solo se nel carrello ci sono solo 2 prodotti e tutti e due uguali
Sto programmando un carrello per un e-commerce.
Devo fare in modo che ogni volta che si apra il carrello venga eseguita una funzione che controlli che tutti i prodotti nel carrello siano ancora disponibili (controllando lo stoccaggio). Ora qui il problema:
Ci possono essere nel carrello più prodotti uguali. Mi spiego: se aggiungo prima un prodotto A e poi dopo un po' di nuovo il prodotto A, nel carrello ci saranno 2 Prodotti A (e non 1 con quantità 2), questo per la natura dell'ecommerce.
Quindi prima di controllare lo stoccaggio devo assicurarmi che nel carrello non ci siano 'doppioni' e se si invece come fare?
Sto cercando di risolvere creando una lista_check ossia una lista in cui vengono messi tutti i prodotti già controllati e una lista 'più_prodotti' a cui vengono aggiunti tutti i prodotti con lo stesso Id-prodotto (per poi fare un ulteriore check dopo su tutti i prodotti nella lista 'più_prodotti' e eventualmente eliminare o modificare la quantità di questi ultimi in base alla disponibilità in magazzino). Bene a scriverlo in italiano ma non riesco a tradurre quest'ultimo paragrafo in Python.
Mi sto complicando la vita ? Vi viene un metodo più facile?
Se fosse invece questa l'unica strada percorribile non riesco comunque a scriverla in codice (help me! )
Ecco il Codice scritto fino ad ora: (anche per chi non è esperto di Python dovrebbe essere Facile da intendere)
django framework--based
Python:
lista_check= []
piu_prodotti=[]
# controlla se sono aggiunti piu volte lo stesso prodotto al carrello
# se è disponibile la quanità (per tutte le volte, ok!) altrimenti diminusce la quantita dell'ultimo/i prodotto/i inserito/i fino all disponibilita (stoccaggio)
for b in carrello_perfetto.prodotti.all():
for check in lista_check:
if b.product.id == check[1]:
piu_prodotti.append([b.id,check[0],b.product.id,b.quantity])
# for z in piu_prodotti:
# if z[0]==check[0]:
# piu_prodotti.append([check[1]])
# da_prendere= b.quantity + float(check[1])
# stoccaggio = b.product.stoccaggio - da_prendere
# if stoccaggio >= 0:
# pass
# else:
# b.quantity = b.product.stoccaggio-float(check[1])
# print(b.quantity)
# if b.quantity<=0:
# b.delete()
# else:
# b.prezzo=float(b.product.prezzo) * b.quantity
#
# b.quantity =round(b.quantity, 2)
# b.prezzo= float(b.prezzo)
# b.save()
lista_check.append([b.id,b.product.id,b.quantity])
sono fermo fin dove non è commentato.
quelle istruzioni commentate sono un metodo che funziona ma solo se nel carrello ci sono solo 2 prodotti e tutti e due uguali
Ultima modifica: