django 聚会租赁公司库存模型
django party rental company inventory model
派对公司出租椅子、table和帐篷。这些都有固定价格,但如果将物品拼凑成一个包裹(例如包裹 A 包括:一个 18x30 帐篷、72 把椅子和 12 tables),则可以节省费用。我正在处理三个不同的包:a、b 和 c。目前我的模型如下。
from django.db import models
from django.contrib.auth.models import User
class Item(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField(decimal_places=2, max_digits=5)
class ItemInventory(models.Model):
item = models.ForeignKey(Item)
quantity = models.PositiveIntegerField()
class Order(models.Model):
user = models.ForeignKey(User)
items = models.ManyToManyField(Item)
total = models.DecimalField(decimal_place=2, max_digits=5)
因此,物品 可以是椅子、table、30x40 帐篷等,这些物品链接到 ItemInventory 来计算剩下多少出租。 Order 可以包含任意数量的任何 Item。 Order.total 总计为每个(Order.items.price x 数量)。
问题 1,如何在 订单 中包含每个 商品 的数量?
问题2,我应该为包创建模型还是在视图中包含包逻辑?
这只是我的意见...
Item
应该有一个 quantity
字段,用于跟踪给定时间库存中的数量。每次下订单时都会更新此字段。
您的 "Order" 表单 class 需要验证订单中的每件商品是否剩余足够的商品,或者抛出验证错误,或者创建延期交货等。
ItemInventory
可能应该更改为 "LineItem" 之类的内容 - 它表示订购了多少商品。它也应该有一个 "price" 字段来记录下订单时的价格。此模型需要 Order
.
的外键
如果您的 LineItem 不包含价格,并且您更改了相关商品的价格,如果您只是依赖 Item.price
,则每个订单总计可能不正确
Order
不需要 "items" 字段,因为您可以使用 order.lineitem_set.all()
查询集来检索这些项目。您还可以使用该查询集上价格列的总和来生成总计,而不是将其作为一列,但这是主观的。
我为一家 POS 软件公司做了很多数据库工作,这是他们大多数数据库的结构。
- ItemMaster(存储有关项目的数据,例如库存、价格等)
- TransactionMaster(存储有关交易的主数据(金额、投标、余额等)
- TransactionDetail(以TransactionMaster作为外键引用,为交易中的每一项提供一行)
此方法允许您抓取交易,然后通过外键引用抓取明细,明细table将包含发票上每个行项目的价格、数量等。这个方法我在很多软件上都见过,感觉还是挺靠谱的。
派对公司出租椅子、table和帐篷。这些都有固定价格,但如果将物品拼凑成一个包裹(例如包裹 A 包括:一个 18x30 帐篷、72 把椅子和 12 tables),则可以节省费用。我正在处理三个不同的包:a、b 和 c。目前我的模型如下。
from django.db import models
from django.contrib.auth.models import User
class Item(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField(decimal_places=2, max_digits=5)
class ItemInventory(models.Model):
item = models.ForeignKey(Item)
quantity = models.PositiveIntegerField()
class Order(models.Model):
user = models.ForeignKey(User)
items = models.ManyToManyField(Item)
total = models.DecimalField(decimal_place=2, max_digits=5)
因此,物品 可以是椅子、table、30x40 帐篷等,这些物品链接到 ItemInventory 来计算剩下多少出租。 Order 可以包含任意数量的任何 Item。 Order.total 总计为每个(Order.items.price x 数量)。
问题 1,如何在 订单 中包含每个 商品 的数量?
问题2,我应该为包创建模型还是在视图中包含包逻辑?
这只是我的意见...
Item
应该有一个 quantity
字段,用于跟踪给定时间库存中的数量。每次下订单时都会更新此字段。
您的 "Order" 表单 class 需要验证订单中的每件商品是否剩余足够的商品,或者抛出验证错误,或者创建延期交货等。
ItemInventory
可能应该更改为 "LineItem" 之类的内容 - 它表示订购了多少商品。它也应该有一个 "price" 字段来记录下订单时的价格。此模型需要 Order
.
如果您的 LineItem 不包含价格,并且您更改了相关商品的价格,如果您只是依赖 Item.price
Order
不需要 "items" 字段,因为您可以使用 order.lineitem_set.all()
查询集来检索这些项目。您还可以使用该查询集上价格列的总和来生成总计,而不是将其作为一列,但这是主观的。
我为一家 POS 软件公司做了很多数据库工作,这是他们大多数数据库的结构。 - ItemMaster(存储有关项目的数据,例如库存、价格等) - TransactionMaster(存储有关交易的主数据(金额、投标、余额等) - TransactionDetail(以TransactionMaster作为外键引用,为交易中的每一项提供一行)
此方法允许您抓取交易,然后通过外键引用抓取明细,明细table将包含发票上每个行项目的价格、数量等。这个方法我在很多软件上都见过,感觉还是挺靠谱的。