Djangoドキュメント、 管理者のブックマークレットのセクション は奇妙に曖昧です。
私の質問はこれです:私がビューにいて、Djangoモデル(または、場合によっては実際のオブジェクト)を持っている場合、それに関連する管理ページにアクセスするにはどうすればよいですか?モデル(またはオブジェクト)?オブジェクトcoconut_transportation.swallow.objects.all()[34]がある場合、管理ページに直接ジャンプしてその特定のツバメを編集するにはどうすればよいですか?
同様に、管理ページのURLを取得して別のツバメを追加するにはどうすればよいですか?
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")
これは実際のオブジェクトインスタンスから取得できます。これは私にとってはうまくいきました。
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,))
これを参照してください: http://djangosnippets.org/snippets/1916/
ContentTypesにクエリを実行せずに、実際に情報を取得できます
これをモデルクラスに追加するだけです。
def get_admin_url(self):
return urlresolvers.reverse("admin:%s_%s_change" %
(self._meta.app_label, self._meta.model_name), args=(self.pk,))