我是一個 python/django 初學者。我決定使用 django 為一個學術專案建立一個電子商務網站。我已經能夠開發足夠的專案并建立對主題的理解,但是現在我遇到了問題,即在下訂單時找到一種方法來減去清單中列出的專案數量。
這是模型的代碼,每個產品都有自己的庫存數量呼叫庫存:
class Product(models.Model):
name = models.CharField(max_length=200, null=True)
price = models.FloatField()
description = models.TextField(default='', null=True, blank=True)
digital = models.BooleanField(default=False,null=True, blank=True)
image = models.ImageField(null=True, blank=True)
inventory = models.IntegerField(default=0)
def __str__(self):
return self.name
def has_inventory(self):
return self.inventory > 0
這是我根據訂購的商品數量減去的代碼,但我無法使其作業,它不會從產品庫存的庫存中減去商品數量。
class OrderItem(models.Model):
product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
quantity = models.IntegerField(default=0, null=True, blank=True)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.product) " x " str(self.quantity)
def inventory(self):
product.inventory = self.inventory
product.inventory -= int(self.quantity)
return inventory
我該怎么做才能讓它發揮作用?
uj5u.com熱心網友回復:
所有邏輯/動作都應該寫在views.py檔案下。您可以創建一個接收請求的函式,當它接收請求時,它接收通過表單輸入的所有值,您可以使用filter它過濾掉要減去其庫存的產品,并update通過 Django 查詢以更新存貨。
它應該在您的視圖函式中看起來像這樣:
Product.objects.filter(name = name, description = description, digital = digital).update(Inventory = F('Inventory')-inventory)
這是關于查詢的 Django 檔案:Django's Making Queries
uj5u.com熱心網友回復:
我認為上面的代碼段存在一些問題。
首先,theOrderItem.inventory不是指正確的值,它應該像下面的代碼片段。
def inventory(self):
// remember the current stock is stored on Product.inventory
return self.product.inventory - self.quantity
其次,該方法的名稱應該是remaining_stock不inventory以防止誤解。
def remaining_stock(self):
return self.product.inventory - self.quantity
另外,不要忘記如果您要存盤inventory產品,請save在成功插入后呼叫該方法OrderItem.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/343308.html
上一篇:根據InQuery回傳不同的訂單
