访问Django 1.7中的User.get_absolute_url

时间:2014-09-08 23:05:59

标签: django django-authentication django-1.7

我刚刚从Django 1.5升级到1.7,现在我的用户对象上没有get_absolute_url方法。

这曾经有用:

In [1]: from django.contrib.auth.models import User

In [2]: u = User.objects.get(pk=1)

In [3]: u.get_absolute_url()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-3-5c5e8a279785> in <module>()
----> 1 u.get_absolute_url()

AttributeError: 'User' object has no attribute 'get_absolute_url'

In [4]: 

作为参考,这是我在settings.py中的内容:

ABSOLUTE_URL_OVERRIDES = {
    'auth.user': lambda u: u'/course/profile/{0}'.format(u.username)
}

关于可能导致这种情况的任何想法?

1 个答案:

答案 0 :(得分:2)

自Django 1.7起,AbstractUser不再定义get_absolute_url方法。这在release notes中提到。

在Django 1.7中,您无法对没有ABSOLUTE_URL_OVERRIDES方法的模型使用get_absolute_url。这已在ticket 11775中修复。您可以将ABSOLUTE_URL_OVERRIDES与Django 1.7.1(release notes)中的任何模型一起使用。