2009-12-30 47 views
1

使用django,假设我有模型类A和B,代表不同类型的Companies。每个公司可能有多个与之关联的用户。很显然,我想使用django的User模型来获取登录信息等。我会怎么做呢?我会添加一个UserProfile,它有两个外键,一个是A,另一个是B(而非空指向用户工作的公司)?还是有另一种方式?django用户关系

谢谢!

回答

1

使用继承:定义公司的超类,与普通领域,然后继承该类并添加ClassACompany和ClassBCompany需要的东西。

这样UserProfile可以有一个公司的外键。如果您需要从公司获得特定类型的公司,您可以按照in the docs的描述来完成。

+0

啊哈,谢谢!感谢您的链接了。 – Colin 2009-12-30 16:11:52

1

你为什么不给公司一个班?这会让你的系统更加简单。

然后你可以有公司内部的特定字段,可以让你判断它是否是A型或B(有什么区别呢?)的

+0

因为不同的公司有不同的数据和不同的关系 - A有多个工厂,而B有多个船,或者其他什么。 – Colin 2009-12-30 16:10:37

+0

然后你可以再减少你的模型。让公司拥有多个具有类型(发货等)的资产实例。例如。 – 2009-12-30 16:25:10

0

如果您确实必须在CompanyA和CompanyB内部有不同的字段,那么您可以让它们都来自您的ForeignKey将指向的公共公司类。

0

您需要引用公司模型,并且如果需要,请将公司与CompanyA和CompanyB分类。为了简单起见,您的公司类可能具有type属性,可能的值为AB,那么您可以避免子类。