使用django,假设我有模型类A和B,代表不同类型的Companies。每个公司可能有多个与之关联的用户。很显然,我想使用django的User模型来获取登录信息等。我会怎么做呢?我会添加一个UserProfile,它有两个外键,一个是A,另一个是B(而非空指向用户工作的公司)?还是有另一种方式?django用户关系
谢谢!
使用django,假设我有模型类A和B,代表不同类型的Companies。每个公司可能有多个与之关联的用户。很显然,我想使用django的User模型来获取登录信息等。我会怎么做呢?我会添加一个UserProfile,它有两个外键,一个是A,另一个是B(而非空指向用户工作的公司)?还是有另一种方式?django用户关系
谢谢!
使用继承:定义公司的超类,与普通领域,然后继承该类并添加ClassACompany和ClassBCompany需要的东西。
这样UserProfile可以有一个公司的外键。如果您需要从公司获得特定类型的公司,您可以按照in the docs的描述来完成。
你为什么不给公司一个班?这会让你的系统更加简单。
然后你可以有公司内部的特定字段,可以让你判断它是否是A型或B(有什么区别呢?)的
因为不同的公司有不同的数据和不同的关系 - A有多个工厂,而B有多个船,或者其他什么。 – Colin 2009-12-30 16:10:37
然后你可以再减少你的模型。让公司拥有多个具有类型(发货等)的资产实例。例如。 – 2009-12-30 16:25:10
如果您确实必须在CompanyA和CompanyB内部有不同的字段,那么您可以让它们都来自您的ForeignKey将指向的公共公司类。
您需要引用公司模型,并且如果需要,请将公司与CompanyA和CompanyB分类。为了简单起见,您的公司类可能具有type
属性,可能的值为A
和B
,那么您可以避免子类。
啊哈,谢谢!感谢您的链接了。 – Colin 2009-12-30 16:11:52