当前这个应用遇到了这样一个问题,django自带的user model有可能与实际应用中的user model字段可能有差异。
这个差异无非是多了字段或少了字段,再就是同名字段定义不一样。
对于多了字段,django有解决方案 https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users。主要思路就是设置个one-to-one的model。
对于少了字段,我暂时没找到好的解决方法。好在django自带的user model并不累赘。
对于同名字段定义不一样我也没办法。
另一种思路就是自己定义一个model,model里实现django自带user里的一些基本方法,然后继承ModelBackend,最后在settings里设置
AUTHENTICATION_BACKENDS = ('xxx.backend.xxxBackend',)
我是觉得这个方案比较丑,都是抄的django代码,所幸的是django1.4把密码那块加强了点,提取到一个公共的地方;另一个缺点就是每次django升级,可能都需要修改代码,比如1.3到1.4就需要。
当然最后我还是选择了自己重写,原因是因为django到目前为止默认的pk都是integer,而不是big integer。我认为这点django应该调整。