【问题标题】:Set `get_absolute_url` in Django auth在 Django auth 中设置 `get_absolute_url`
【发布时间】:2015-07-01 04:29:43
【问题描述】:

我正在使用 Django 的内置身份验证模型。

如何设置get_absolute_url 而不用自定义身份验证模型替换整个身份验证模型?

【问题讨论】:

    标签: python django django-models django-urls django-authentication


    【解决方案1】:

    您需要替换用户模型。但是你可以简单地从AbstractUser继承,它已经为你定义了所有的字段,所以你只需要重写你想要的方法:

    class MyUser(AbstractUser):
        def get_absolute_url(self):
            return ...
    

    然后只需在 settings.py 中执行 AUTH_USER_MODEL = 'my_app.MyUser',就可以开始了。

    【讨论】:

    • 谢谢。我可以对内置模型Group做同样的事情吗?
    【解决方案2】:

    您可以从内置模型继承,例如User

    class Author(User):
        def get_absolute_url(self):
            return what_you_want
    

    更新

    我的第一个答案和接受的一样,但是在与提问的人沟通后,我做了一些改变。但为什么我总是被投票否决?请先看评论。

    【讨论】:

    • 但是我是否必须更换内置模型才能使用此模型?我想在我引用用户模型的模板中的任何地方使用{{ author.get_absolute_url }} 等。
    • 那我建议你使用OneToOneField,这样你就可以像User.author.get_absolute_url一样使用了
    • 但是我有很多不同的模型都引用了用户模型,所以我不想在所有模型中都创建get_absolute_url 方法。
    • 您可以像我在回答中所做的那样定义一个模型,并且所有many different models 现在都可以引用新模型。所以你不需要在所有模型中都创建get_absolute_url 方法,只需要一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 2019-01-02
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多