Idealnie powinieneś mieć stock
pole w Twoim Product
model, aby zachować liczbę dostępnych ilości dla tego produktu.
Kiedy ktoś złoży zamówienie, oddzielne order
instancję należy utworzyć z ilością ilości Prodduct
określony. Zapasy należy zmniejszyć dopiero po otrzymaniu wywołania zwrotnego dla tego order
lub otrzymany webhook potwierdzający płatność.
Nie uniemożliwiłoby to innym klientom składania zamówień na ten sam produkt, dopóki produkt nie zostanie faktycznie sprzedany.
Innym podejściem może być zmniejszenie zapasów, gdy klient przejdzie na stronę zwrotną i uwolnienie zapasów, jeśli płatność nie zostanie otrzymana w określonym czasie. Wymagane byłoby do tego zadanie w tle.
Uwaga: użyj F
obiekt z django.models
jednocześnie zmniejszając zapas w celu zmniejszenia zapasów z wartości DB, a nie atrybutu instancji.