Django Admin 模块的一点笔记

Django 的 Admin 模块还算是比较好用的吧,最起码不用完全自己造轮子了。但是这个东西也不能拿来就用。下面说说这几天遇到的坑。

change list 里面,那个 “删除选中” 的 action 如何去掉?

我定义了三个自己的 action,但是 action 列表里面总是有 “删除选中” 这个 action。明明没有在 actions 里面写啊!

Django 获取 action 列表的时候应该是通过 get_actions 函数来获取的。那么,重写一下这个函数就好了。如下。

我有一个 XXXModel ,想在首页上放一个到这个 Model 管理页面的直达链接?

对的,就是这个奇怪的需求。

首先情况说明几个东西:Django 的 Admin Site 分为好多种页面。直接用 admin.site.register 注册出来的这个大表格页面叫做 changelist(好奇怪的名字啊),可以对 Model 进行修改的页面叫做 change

其次,为了到达这个大表格页面,我们需要知道两个东西:app_labelmodel_name

app_labelmanage.py startapp XXXX 之后,apps.py 里面的 name。一般会和前面你输入的 XXXX 是一致的。

model_name 么…… 比如你在 models.py 里面定义了一个 ABCModelLalala,那么 model_name 就是 abcmodellalala

然后,在 Template 里面的使用方法为:{% url'admin:{{app_label}}_{{model_name}}_changelist'%}

比如,我的 application 叫做 HowOldAreYou,有一个 Model 叫做 ModelAge,那么,为了直达这个 Model 的管理大表格,我需要写的链接 URL 为 {% url'admin:HowOldWebsite_modelage_changelist'%}

参考资料:The Django admin site

我想自定义 Action

可以。直接看 doc 即可。

注意,queryset 可以直接当成 list 来用,也可以直接 queryset.update(xx=xxx) 这样一下子全部更新。

我想让在列表里面显示个图片出来

拿个函数包裹一下就好了。

感觉 Django 用尽了 Python 的黑魔法。

我知道类名,想获取这个类本身

恩,反射。

抓面这段代码很有用:

=====

现就这么多。以后遇到坑再写。

第二次拿 Django 写东西,还是不熟练啊!

发表评论

电子邮件地址不会被公开。 必填项已用*标注