15、Django Admin添加自定义字段功能

修改模型类HeroAdmin

复制代码
@admin.register(Hero)
class HeroAdmin(admin.ModelAdmin):
    change_list_template = "entities/heroes_changelist.html"
    
    ...    # 此处原代码不动,只增加此前后代码
    
    def get_urls(self):
        urls = super().get_urls()
        my_urls = [
            path('immortal/', self.set_immortal),
            path('mortal/', self.set_mortal),
        ]
        return my_urls + urls
    def set_immortal(self, request):
        self.model.objects.all().update(is_immortal=True)
        self.message_user(request, "All heroes are now immortal")
        return HttpResponseRedirect("../")
    def set_mortal(self, request):
        self.model.objects.all().update(is_immortal=False)
        self.message_user(request, "All heroes are now mortal")
        return HttpResponseRedirect("../")

新增目录文件templates/Entities/change_form.html,Entities为应用名。change_form.html代码如下:

复制代码
{% extends "admin/change_form.html" %}
{% load i18n admin_urls %}
{% block object-tools-items %}
    <li>
        <a href="{% url opts|admin_urlname:'history' original.pk|admin_urlquote %}" class="historylink">{% translate "History" %}</a>
    </li>
    <li>
        <a href="mylink/" class="historylink">My Link</a>
    </li>
    {% if has_absolute_url %}
        <li>
            <a href="{% url 'admin:view_on_site' content_type_id original.pk %}" class="viewsitelink">{% translate "View on site" %}</a>
        </li>
    {% endif %}
{% endblock %}

显示效果:

相关推荐
Python私教1 小时前
从表格到管理系统:别先写页面,先补齐权限、流程和审计
数据库·后端·架构
陈皮波比茶1 小时前
Redis学习
数据库·redis·学习
—Miss. Z—1 小时前
备份与恢复
数据库·oracle
ltl2 小时前
RocksDB Leveled Compaction:层级不变式与 CompactionPicker
数据库
ltl2 小时前
DuckDB 向量化与 Morsel-Driven Pipeline
数据库
北斗落凡尘2 小时前
LangGraph 入门实战(12)--使用MCP
后端·python·langchain
NJCloud2 小时前
TiDB 集群部署与 MySQL 兼容性适配实战
linux·运维·数据库·mysql·tidb
jdksjw2 小时前
同步与异步、阻塞与非阻塞、多线程、协程超详细讲解(Python并发编程从入门到精通)
开发语言·python
喜欢打篮球的普通人2 小时前
LLVM Backend Lowering 从入门到实战:把 IR 变成机器码的完整链路
android·java·数据库