栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

在Django Admin后台实现显示彩色标签项

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Django Admin后台实现显示彩色标签项

业务需求

想在Django Admin后台显示彩色标签项,如下图:
那么究竟该如何实现上图所示的彩色标签呢?

解决方案

这里使用django-taggit来实现该功能,具体步骤如下:

  1. 安装django-taggit模块
    pip install django-taggit
  2. 配置settings.py
    添加'taggit'到您的项目INSTALLED_APPS设置中
    INSTALLED_APPS = [
    	...... ,
        'taggit'
    ]
    

    配置完成后,运行python .manage.py migrate使其生效。

  3. 在models.py中设计模型字段
    from django.db import modelsr
    from taggit.managers import TaggableManager
    
    
    class Media(models.Model):
    	media_tags = TaggableManager(blank=True, verbose_name='标签', help_text='请输入标签,多个标签以空格或英文逗号分隔')
    	......
    
  4. 在admin.py中设计显示效果
    import random
    
    from django.contrib import admin
    from django.utils.html import format_html
    
    from mms.models import Media
    
    class MediaAdmin(admin.ModelAdmin):
    	def get_queryset(self, request):
            return super().get_queryset(request).prefetch_related('media_tags')
    
    	def tag_list(self, obj):
            color = ['#0B5ED7', '#6C757D', '#198754', '#BB2D3B', '#FFCA2C', '#31D2F2', '#212529']
            return format_html(''.join(f'{random.choice(color)}; border-color: #dc3545; display: inline; padding: .375rem .25rem; margin-top: .25rem; margin-left: .25rem; margin-bottom: .25rem; font-size: 0.6rem; font-weight: 300; line-height: 0.6; text-align: center; vertical-align: middle; border: 1px solid transparent; border-radius: .25rem;">{o.name}'for o in obj.media_tags.all()))
    	tag_list.allow_tags = True
    	tag_list.short_description = '标签'
    
    	list_display = ['tag_list']
    	search_fields = ['media_tags__name']
    
    admin.site.register(Media, MediaAdmin)
    
  5. 实现效果如下图:

  6. 存在问题
    通过方法设置的彩色标签不可以将其添加到list_editable字段中,该问题已提交到django-taggit的Issues中#759,后续会跟进该问题的解决方案并将其同步在此!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321358.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号