Django Admin Cookbook-38如何获取特定对象的Django Admin后台URL

38.如何获取特定对象的Django Admin后台URL?

Hero模型有一个children字段,显示每个英雄的孩子的名字。你被要求将每个childrin链接到Hero模型更改页面。实现如下:

@admin.register(Hero)
class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
    ...
    def children_display(self, obj):
        display_text = ", ".join([
            "<a href={}>{}</a>".format(
                    reverse('admin:{}_{}_change'.format(obj._meta.app_label, obj._meta.model_name),
                    args=(child.pk,)),
                child.name)
             for child in obj.children.all()
        ])
        if display_text:
            return mark_safe(display_text)
        return "-"

以上的reverse(‘admin:{}_{}_change‘.format(obj._meta.app_label, obj._meta.model_name), args=(child.pk,))返回一个对象后台修改页的URL。

其他页面如下:

  • 删除页URL: reverse(‘admin:{}_{}_delete‘.format(obj._meta.app_label, obj._meta.model_name), args=(child.pk,))
  • 历史页URL: reverse(‘admin:{}_{}_history‘.format(obj._meta.app_label, obj._meta.model_name), args=(child.pk,))

返回目录

原文地址:https://www.cnblogs.com/superhin/p/12192363.html

时间: 2024-10-12 16:58:44

Django Admin Cookbook-38如何获取特定对象的Django Admin后台URL的相关文章

Django Admin Cookbook 中文版

英文原版 链接 http://books.agiliq.com/projects/django-admin-cookbook/en/latest/ Django Admin Cookbook-如何定制和使用Django Admin管理后台 这是一本关于如何使用和定制Django Admin管理后台的书,它采用了我们所回答的,大约40个常见问题和基本任务的方式编写. 这些章节基于一组通用Django模型来讲解,你可以在此处详细阅读(本书中使用的模型). 简单的说,我们建立了两个Django应用,分

Python学习---Django的request扩展【获取用户设备信息】

关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS = (os.path.join(BASE_DIR, "statics"),) # 现添加的配置,这里是元组,注意逗号 TEMPLATES = [ ... 'DIRS': [os.path.join(BASE_DIR, 'templates')], ] urls.py from django

Django学习【第28篇】:Django Admin的相关知识

Django Admin的相关知识 一.面向对象复习 1.类的继承 class Base(object): def __init__(self,val): self.val = val def func(self): self.test() print(self.val) def test(self): print("Base.test") class Foo(Base): def test(self): print("FOO.test") # def func(s

Django学习(九)---Templates过滤器及Django shell和Admin增强

一.Templates过滤器 过滤器属于django模板语言 修改模板中的变量,从而显示不同内容 {{ value | filter }} 举例:{{ list_nums | length}}    表示list的长度 {{ value | filter | filter | filter }} 可叠加 django模板如果出现了不存在的变量,不会报错,只会给出空值 因此修改add_article.html   去掉{{% if *** %}} 添加过滤器default <!DOCTYPE ht

【Mac系统 + Python + Django】之开发一个发布会系统【Django视图(一)】

这里我们要进行开发一个发布会系统来了解Django框架,来看第一部分. 目录: 一.登录功能 二.Cookie和Session 三.Django认证系统 一.登录功能 返回目录 在上一章,我们已经简单用了html模板,在它基础上继续开发: 1.修改index.html文件为发布会html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &l

python读书笔记-django架站过程总结(from the django book)

django架站过程总结:1.django-admin startproject store2.store这个project的目录下有:__init__,manage,setting,urls3.setting里面的重点:     a.配置数据库(engine,name,use,passwd,port,host),以sqlite为例,填上sqlite3.已创建的db(修改:不用提前创建数据库)     b.language,time_zone     c.installed apps:安装dja

Django 使用allauth报错 RuntimeError: Model class django.contrib.sites.models.Site doesn&#39;t declare an explicit app_label and isn&#39;t in an application in INSTALLED_APPS

一:报错 RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS 出现这种情况需将Django的Sites框架添加到您的应用程序中,并在您的设置中将SITE_ID设置为1即可.位置放在默认配置的后面,其他应用的前面. INSTALLED_APPS = [ 'django

Django开发博客系统(07-根据需求定制管理后台)

运行系统尝试添加用户并添加数据,出现的效果 可以看到当前登录的用户虽然是DOCTOR,但依然可以看到其他用户的文章,而且过滤器上也展示了非当前用户创建的分类,显然这是一个需要我们解决的问题. 首先解决右侧过滤器的功能,这时需要自定义过滤器,这里贴上文档中的说明 接下来我们就来编写自定义过滤器的代码: 1 class CategoryOwnerFilter(admin.SimpleListFilter): 2 """自定义过滤器只展示当前用户分类""&quo

微信开发python+django两个月的成功经历,django是个好框架!

时间:大三 上学期没有用微信内置浏览器而纯对话开发,坑了自己好一下. 下学期选错bottle框架,以为轻量好,谁知开发中什么都自己来很痛苦. 选对了框架django,终于在大三最后的个把月里写出了里程碑式的现在这个微信端,自己都感动到,作为我大三一年web开发的终结吧. 亮点1:自带后台管理 亮点2:后台权限管理 亮点3:微信回复规则设置去代码化,图形界面. 亮点4:一平台多网店 技巧:微信规则不匹配时不能回复吗?不是,规则包含空字符总能匹配任意文本,请看下面的微信规则截图. 后台 选择botl