Code

Opened 9 years ago

Closed 11 months ago

#680 closed Bug (fixed)

get_absolute_url not being used correctly in admin interface?

Reported by: malcolm@… Owned by: adrian
Component: contrib.admin Version:
Severity: normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: yes
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

If a model defines a get_absolute_url(), the admin interface adds a "View on site" button. However, the URL created for the link does no use the string returned from get_absolute_url() at all.

In django/contrib/admin/views/main.py, the two places where a URL is constructed after looking get_absolute_url() both create something looking like r/1/4 where the first digit is the content type id and the latter is the object id. This looks like it is not what is intended.

Attachments (0)

Change History (3)

comment:1 Changed 9 years ago by ian@…

  • Resolution set to fixed
  • Status changed from new to closed

I got stung by this once recently as well.

you will need to add the following to your URLpatterns

     ( r'^r/', include('django.conf.urls.shortcut')),

it doesn't use the 'get_absolute_url' function as the admin interface could be on a different host name, so it wouldn't work. the '/r' shortcut would redirect you to the domain specified in the 'site' table (and it would redirect to the absolute url there I think)

re-open if this doesn't explain it

comment:2 Changed 11 months ago by cyogesh

  • Easy pickings unset
  • Needs documentation set
  • Resolution fixed deleted
  • Status changed from closed to new
  • Type changed from defect to Bug
  • UI/UX unset

Here is one of the problems of 'requiring' such a change. Don't make this modification in urls and do the following:

  1. Go to admin/sites/site/
  2. change the domain and you will be redirected to the new mentioned domain

However if you:

  1. Go to admin/sites/site/
  2. Delete the site mentioned there
  3. Add a new site you want to be redirected to

There will be no change in link directed by 'View on site'.

I think if this modification is *required*, it should be (at-least) documented.

comment:3 Changed 11 months ago by kmtracey

  • Resolution set to fixed
  • Status changed from new to closed

This ticket is 8 years old, a lot has changed since then. Needing to include shortcut urls in your own url conf is not documented because it is not required. (I assume you are not using pre-1.0 Django.) The admin itself takes care to ensure there is a url pattern in place to handle the r/<content_type_id>/<object_id> urls it generates for the "View on Site" buttons. These requests are routed to the shortcut view noted here:

https://docs.djangoproject.com/en/1.5/ref/contrib/sites/#how-django-uses-the-sites-framework

and implemented here:

https://github.com/django/django/blob/master/django/contrib/contenttypes/views.py#L9

It isn't entirely clear to me what you are expecting differs from what is happening with respect to the "view on site" buttons, it's quite possible that view doesn't do what you expecting. If there is a bug here, it most likely needs its own bug to track it, with a current and complete description of what is going wrong...linking some current oddness to an eight-year-old ticket is just going to confuse things.

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.