为什么我不应该将其他配置文件字段直接添加到我的django.contrib.auth.models.User表中?

时间:2011-05-22 16:51:20

标签: django database-design django-models

要在Django中添加其他用户个人资料信息,似乎建议使用AUTH_PROFILE_MODEL

但是,在django.contrib.auth.models.User表中直接添加其他配置文件字段是否有任何缺点?对我来说,这似乎更容易/更直接(虽然被授予,我还没有掌握使用信号)。

有没有非常强烈的实际理由反对这样做?

2 个答案:

答案 0 :(得分:3)

我可以想到以下原因:

Django更新

每次更新Django时都必须更新contrib.auth,这样就不会破坏您的应用程序,这是一个维护噩梦。使用AUTH_PROFILE_MODEL方法可以使Django更新无痛,同时它提供了向User添加新信息的功能。这被称为loose coupling我相信。

User相关应用

严重依赖具有完全相同字段的User的第三方应用程序将失败,例如,您向User模型添加声明为NOT NULL的字段或删除一些预期的字段到那里。

进一步阅读AUTH_PROFILE_MODEL

答案 1 :(得分:1)

简短回答,使用配置文件更易于维护。基于我的理解,建议不要做的是在更新Django版本后进行更改。如果您修改django.contrib.auth.models.User模型,则更新后将删除更改,或者您将负责合并所做的任何更改(如果有)。另一方面,如果代码存在于您的应用程序中,例如配置文件,那么它更容易管理。基于此,如果你发现另一种方法可以实现相同的目标,或者如果你没有将其视为维护麻烦,那么它应该无论多么重要。