В идеале у вас должно быть поле stock
в вашей модели Product
, чтобы сохранить количество доступных количеств для этого продукта.
Когда кто-то размещает заказ, должен быть создан отдельный экземпляр order
с указанным количеством Prodduct
. Запас должен быть уменьшен только после получения обратного вызова для этого order
или получения веб-крюка, подтверждающего оплату.
Это не помешает другим клиентам размещать заказы на тот же продукт до тех пор, пока товар фактически не будетпродано.
Другим подходом может быть уменьшение запаса, когда клиент переходит на страницу обратного вызова, и отпускание запаса, если платеж не получен в течение определенного периода времени. Для этого потребуется фоновая задача.
Примечание: использовать F
объект из django.models
при сокращении запаса, чтобы уменьшить запас из значения БД, а не атрибута экземпляра.