For a django model, how can I get the django admin URL to add another, or list objects, etc.?

前端 未结 3 2147
攒了一身酷
攒了一身酷 2020-12-24 12:43

As much as I love the django documentation, the section on bookmarklets in the admin is strangely vague.

My question is this: If I\'m in a view and I have a django

相关标签:
3条回答
  • 2020-12-24 13:25

    You can retrieve this from the actual object instance, this worked for me:

    from django.core import urlresolvers
    from django.contrib.contenttypes.models import ContentType
    
    content_type = ContentType.objects.get_for_model(object.__class__)
    object_admin_url = django.core.urlresolvers.reverse("admin:%s_%s_change" % (content_type.app_label, content_type.model), args=(object.pk,))
    

    See this: http://djangosnippets.org/snippets/1916/

    0 讨论(0)
  • 2020-12-24 13:30

    You can actually retrieve the info without making a query to ContentTypes

    Just add this to your model class:

    def get_admin_url(self):
        return urlresolvers.reverse("admin:%s_%s_change" %
            (self._meta.app_label, self._meta.model_name), args=(self.pk,))
    
    0 讨论(0)
  • 2020-12-24 13:38

    http://docs.djangoproject.com/en/dev/ref/contrib/admin/#reversing-admin-urls

    obj = coconut_transportation.swallow.objects.all()[34]
    
    # list url
    url = reverse("admin:coconut_transportation_swallow_changelist")
    
    # change url
    url = reverse("admin:coconut_transportation_swallow_change", args=[obj.id])
    
    # add url
    url = reverse("admin:coconut_transportation_swallow_add")
    
    0 讨论(0)
提交回复
热议问题