django中自定义admin中change_list.html中字段的显示

本文介绍了如何在Django的admin界面中自定义change_list.html页面,通过覆盖默认模板并创建自定义标签实现列表显示字段的定制,包括设置链接、样式以及使用自定义模板和JS进行更复杂的展示效果。
摘要由CSDN通过智能技术生成

自定义adminchange_list.html中字段的显示

1 使用应用中的change_list.html覆盖admin上的列表显示页面change_list.html

django中的列表显示页,位于

D:\Python36\Lib\site-packages\django\contrib\admin\templates\admin目录下

change_list.html  change_list_results.html复制到应用中,路径如下:

Mysite/应用名/templates/应用名/

 

2 在change_list.html页面中看到如下标签

{% result_list cl %}

 将其替按为我们的自定义标签,在应用中新建目录templatetags

新建自定义标签,示例代码如下:

from django.contrib.admin.templatetags.admin_list import *
from django import template

#自定义标签

register = template.Library()

#注册标签
@register.inclusion_tag("应用名/change_list_results.html")
def result_list1(cl):

    """
    Displays the headers and data list together
    """
    
headers = list(result_headers(cl))
    num_sorted_fields = 0
    for h in headers:
        if h['sortable'] and h['sorted']:
            num_sorted_fields += 1
    return { 'cl': cl,
            'result_hidden_fields': list(result_hidden_fields(cl)),
            'result_headers': headers,
            'num_sorted_fields': num_sorted_fields,
            #设置返回列表数据
            
'results': list(results(cl))}

#取得信息列表
def results(cl):
    if cl.formset:
        

from django.contrib import admin from django.urls import reverse from django.utils.html import format_html from django.shortcuts import redirect from .models import Drug @admin.register(Drug) class DrugAdmin(admin.ModelAdmin): change_list_template = 'admin/drug/change_list.html' def get_urls(self): urls = super().get_urls() custom_urls = [ path('import-csv/', self.import_csv), ] return custom_urls + urls def import_csv(self, request): if request.method == 'POST': # TODO: import CSV data self.message_user(request, 'CSV data imported successfully') return redirect('..') return render(request, 'admin/drug/import_csv.html') def changelist_view(self, request, extra_context=None): if not request.GET.get('ordering'): # set default ordering request.GET = request.GET.copy() request.GET['ordering'] = 'name' return super().changelist_view(request, extra_context=extra_context) def interaction_display(self, obj): return format_html('<pre>{}</pre>', obj.interaction) interaction_display.short_description = 'Interaction' def get_actions(self, request): actions = super().get_actions(request) del actions['delete_selected'] return actions def delete_model(self, request, obj): # TODO: delete model pass def delete_selected(self, request, queryset): # TODO: delete selected models pass def get_queryset(self, request): qs = super().get_queryset(request) qs = qs.order_by('name') return qs def add_view(self, request, form_url='', extra_context=None): self.change_list_template = None return super().add_view(request, form_url=form_url, extra_context=extra_context) def change_view(self, request, object_id, form_url='', extra_context=None): self.change_list_template = None return super().change_view(request, object_id, form_url=form_url, extra_context=extra_context) def delete_view(self, request, object_id, extra_context=None): self.change_list_template = None return super().delete_view(request, object_id, extra_context=extra_context) 需要添加什么html文件
05-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值