Override default get_absolute_url on User objects?

Viewed 4745

I'm trying to make a generic table for listing django_tables objects. I've got everything working, except that the get_absolute_urls() on my User objects returns:

/users/<username>/

While I could create this URL, it doesn't match with the rest of the site layout, so I'm looking for another way to do this. Is there a way to override this value without breaking the built in authentication and other functionality?

2 Answers

As a side note:

Since django v1.7 the django.contrib.auth.models.AbstractUser no longer defines a get_absolute_url() method (see release notes).

So the OP's problem will not exist with django > v1.7 as you anyways need to define your custom get_absolute_url() method.

Now there are two way to do this:

  1. Define a get_absolute_url() method in your User model extension.
  2. Use the solution from Mark Lavin's answer to create (not overwrite) the User.get_absolute_url() through the ABSOLUTE_URL_OVERRIDES setting.
Related