我刚刚进入Python和Django,所以请原谅我的无知。
在构建我的模型时,我决定使用用户扩展而不是替换。看起来更简单,我还是新人。我发现一个摘要对于通用信息,地址电话等非常有效,但是我还需要多个模型来获取不同的信息(员工对于ex客户端)。所以我的问题是:
可以和抽象扩展用户,然后用作每个模型的基础吗?
代码:
class Common(models.Model):
user = models.OneToOneField(User)
#other proprerties addr, ph etc
Class Meta:
abstract = true
class Employee(Common):
reportsTo = models.OneToOneField(User)
#timeOff, title, dept, etc.
这是可行的,还是其他方法可以更好地运作?
答案 0 :(得分:1)
是的,这样可以正常工作,您也可以在基类中存储任何其他常用属性。
您可能还希望使用InheritanceManager
作为django-model-utils
的一部分提供,这允许您对Common
基类执行查询并检索所有对象都是实例的集合Employee
或Client
使用:
Common.objects.all().select_subclasses()
否则所有对象将只包含User
对象的链接。有关更完整的示例,请参阅:django - Get a set of objects from different models field names。