Django设计模式 - 使用ForeignKey引用多个类的模型

时间:2011-11-25 22:07:32

标签: python django django-models

我正在设计一个Django库存跟踪应用程序,并且在模型布局中遇到了障碍。我有一个清单对象列表(Assets),它可以存在于WarehouseShipment中。我想为两种类型的位置存储不同的属性列表,例如:

  • 对于Warehouse,我想存储地址,经理等
  • 对于Shipment,我想存储运营商,跟踪号码等

由于每个WarehouseShipment可以包含多个Asset,但每个Asset一次只能在一个位置,因此添加ForeignKeyAsset模型的关系似乎是要走的路。但是,由于WarehouseShipment对象具有不同的数据模型,我不确定如何最好地执行此操作。

一个明显(有点难看)的解决方案是创建一个Location模型,其中包含所有ShipmentWarehouse属性以及is_warehouse布尔属性,但是这个让我感觉像是一块混蛋。有没有更清晰的方法来解决这类问题(或者是否有任何非Django Python库可能更适合这个问题?)

2 个答案:

答案 0 :(得分:1)

如何在资产上使用通用外键?

答案 1 :(得分:0)

我认为创建一个“直通”表格非常合理,例如location,它关联资产,内容(外键)和content_type(仓库或货件)。您可以在asset_fk上设置一个唯一约束,以便它一次只能存在于一个位置