2

对于我的需求,内置模型 User 是不够的......所以我有自己的模型 UserProfile ,我想通过这个模型在现场进行身份验证(UserProfile 不继承自 User 模型并且根本不相关)。

我的模型:

class UserProfile(models.Model):
    password = models.CharField(max_length = 40)
    email = models.EmailField(max_length = 72, unique = True)

    ## Add this so that you can use request.user.is_authenticated
    def is_authenticated(self): 
        return True

但内置身份验证使用模型用户。

所以我想了解如何更改它,所以身份验证使用我的模型 UserProfile 和所有身份验证功能??

一个好的教程会很棒!

(逐步在视图、模型和身份验证中)

PS:我知道我可以在其他模型中存储额外的数据,但我不希望那样

4

2 回答 2

3

这是一个更极端的例子,但说明了你想做的事情是可以做到的。作者不仅替换了身份验证后端使用的 User 模型,而且使用 SQLAlchemy 代替了 Django ORM。http://tomforb.es/using-a-custom-sqlalchemy-users-model-with-django

要点是您需要编写后端authenticateget_user方法来检索您的自定义用户模型。如果您还想支持权限,则需要编写has_perm.

于 2012-04-25T14:01:02.627 回答
0

我使用了这篇文章,它对我来说已经足够好了,希望它对你有用。

苏丹

于 2012-04-25T13:22:59.900 回答