我正在开发一个django项目。我创建了一些应用程序,其中一些与用户模型有关,例如,我有一个处理用户提要的提要应用程序,另一个应用程序处理额外的用户数据,如年龄,联系人和朋友。对于其中的每一个,我创建了一个应该连接到User模型的表,我用它来存储和验证用户。
我找到了两种方法来处理这个问题。一,是通过扩展User模型来实现这样的:
ModelName(User):
friends = models.ManyToMany('self')
.....
二,通过向新表添加一个外键,如下所示:
ModelName(models.Model):
user = models.ForeignKey(User, unique=True)
friends = friends = models.ManyToMany('self')
......
我无法决定在哪种情况下使用哪个。换句话说,两者之间的核心差异是什么?
答案 0 :(得分:2)
无论哪种方式都在技术上有效。对User
模型进行子类化实际上与子类化models.Model
相同,然后包含user = models.OneToOneField(User)
行。
尽管如此,Django book选择了models.Model
路线。我也同意这在语法上更直接。
我还会指向Django文档的storing additional information about users部分,该部分将教您AUTH_PROFILE_MODULE
设置和get_profile()
方法。使用它们是非常好的做法。