我创建了三个Django模型 - Inventory,SalesOrder和Invoice - 来模拟库存中的项目,这些项目的销售订单以及特定销售订单的发票。每个销售订单可以有多个项目,因此我使用了中间联结表 - SalesOrderItems
- 使用through
的{{1}}参数。此外,允许对销售订单进行部分结算,因此我在与ManyToManyField
模型相关的ForeignKey
模型中创建了Invoice
,以便特定销售订单可以包含多个发票
这是我偏离我通常看到的地方。我没有通过SalesOrder
将Invoice
模型与Item
模型相关联,而是通过中介将ManyToManyField
模型与Invoice
中间联结表相关联联结表SalesOrderItem
。我这样做是因为它更好地模拟了现实 - 我们的发票与销售订单相关联,并且只能包含与该销售订单相关的项目而不是库存中的任何项目。我承认,如果InvoiceItem
的中间联结表与另一个ManyToManyField
的中间联结表相关,那似乎很奇怪。
ManyToManyField
模型中invoice_items
的可用选项限制为该特定Invoice
的{{1}}模型的sales_order_items
无论如何通过管理页面或表格访问模型?SalesOrder