与额外字段的多对多关系 - 如何规避唯一性

时间:2011-01-10 21:58:31

标签: django django-models

我有以下任务。 有三个模型Project,User和PurchaseOrder。我希望能够为项目中的用户创建成员资格。用户可以是任意项目中的成员。这可以用a来解决 ManyToManyField。

此外,会员资格应引用PurchaseOrder,因为我想将工作时间分配给特定的PurchaseOrders。

我认为这可以通过对ManyToManyField使用through-table并为PurchaseOrder模型定义ForeignKey来解决。因此,我会为每个成员提供对PurchaseOrder的引用。

实际上,项目的成员资格将保持活跃状态​​,而在花钱购买PurchaseOrder之后,必须将新的PurchaseOrder分配给成员资格。只需将ForeignKey更新为新的PurchaseOrder,这也很容易。

但现在我的问题是:

我想保留旧的Project-membership-PurchaseOrder-Relation(成员资格表中的数据行,用于历史记录跟踪),将其设置为禁用并添加新的Project-membership-PurchaseOrder-Relation,它们将具有相同的ForeignKey to User和Project,但与PurchaseOrder不同,并且标志设置为启用。

这是一种有效的方法,这是否有效,是否有可能规避唯一性(或者根据定义没有ManyToManyField的唯一性),或者您是否更好地了解如何做到这一点?

1 个答案:

答案 0 :(得分:1)

当我读完这篇文章时,我无法弄清楚为什么甚至会为会员的多对多关系而烦恼> PurchaseOrder的。

我会为会员提供一对多的关系> PurchaseOrder和多对多关系成员>项目,因为会员资格似乎是这一切的主要关键。

这样,您不必更新任何密钥。然后我会创建第四个模型,具有多对多关系,跟踪购买。添加Membership prim。 key和PurchaseOrder prim.key。