覆盖默认的User对象上get_absolute_url方法?

32

我尝试创建一个通用的表格来列出django_tables对象。我已经完成了所有工作,只有User对象上的get_absolute_urls()返回:

/users/<username>/
虽然我可以创建这个URL,但它与网站布局不匹配,所以我正在寻找另一种方法来实现这个目标。有没有一种方法可以覆盖这个值而不破坏内置的身份验证和其他功能?
2个回答

50

太棒了!设置文件是我没有想到的地方。谢谢。 - Jack M.

0

顺便提一下:

自从django v1.7开始,django.contrib.auth.models.AbstractUser不再定义get_absolute_url()方法(参见发布说明)。

因此,如果使用的是django > v1.7,OP的问题将不会存在,因为您仍然需要定义您自己的get_absolute_url()方法。

现在有两种方法可以做到这一点:

  1. 在您的用户模型扩展中定义一个get_absolute_url()方法。
  2. 使用Mark Lavin's answer中的解决方案,通过ABSOLUTE_URL_OVERRIDES设置创建(而不是覆盖)User.get_absolute_url()

你好。能否详细说明一下?你所说的用户模型扩展是什么意思?我应该把我的新用户模型,例如 `class UserTmp(User):def get_absolute_url(self): return f"/user/{self.id}/"` 放在哪里? - 丶 Limeー来夢 丶

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接