1
You can use the Reversing admin URLs
feature
from django.core import urlresolvers
c = Choice.objects.get(...)
change_url = urlresolvers.reverse('admin:polls_choice_change', args=(c.id,))
If you wish to refer the change_list page, you would do
urlresolvers.reverse('admin:%s_%s_changelist' % (app_label, model_name))
0
It’s also possible to set app_name and model_name with ContentType see: https://stackoverflow.com/a/11395481/991572
So I ended up doing this in webapp/models.py
:
from django.contrib.contenttypes.models import ContentType
from django.core import urlresolvers
class Base(models.Model):
title = models.CharField(max_length=100)
def _get_admin_url(self):
"Returns the admin change view url."
content_type = ContentType.objects.get_for_model(self.__class__)
view_name = "admin:%s_%s_change" % (content_type.app_label, content_type.model)
url = urlresolvers.reverse(view_name, args=(self.id,))
return url
admin_url = property(_get_admin_url)
class Book(Base):
something = models.CharField(max_length=100)
Register Base and Book to the admin site, created some entries and in shell:
In [1]: from webapp.models import *
In [2]: Base.objects.get(pk=1).admin_url
Out[2]: '/admin/webapp/base/1/'
In [3]: Book.objects.get(pk=2).admin_url
Out[3]: '/admin/webapp/book/2/'
- [Answer]-How to Render Django Forms.TimeField in 12h Format in Template?
- [Answer]-How to configure apache2 for django wsgi?
- [Answer]-Django 1.8 Not Serving Static Files in Development
- [Answer]-Django registration [Errno 10013] error
- [Answer]-Django 1.6 Why can't I display avatars?
Source:stackexchange.com