在 Django auth 中设置 `get_absolute_url`
Posted
技术标签:
【中文标题】在 Django auth 中设置 `get_absolute_url`【英文标题】:Set `get_absolute_url` in Django auth 【发布时间】:2015-07-01 04:29:43 【问题描述】:我正在使用 Django 的内置身份验证模型。
如何设置get_absolute_url
而不用自定义身份验证模型替换整个身份验证模型?
【问题讨论】:
【参考方案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
方法,只需要一个。以上是关于在 Django auth 中设置 `get_absolute_url`的主要内容,如果未能解决你的问题,请参考以下文章