重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要为大家展示了“如何对django后台admin下拉框进行过滤”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何对django后台admin下拉框进行过滤”这篇文章吧。
创新互联成立于2013年,先为南靖等服务建站,南靖等地企业,进行企业商务咨询服务。为南靖企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。使用django admin 自带后台
admin后台下拉显示的时候需要添加过滤条件,
因为表是自己关联自己,同时还需要过滤掉自己, 需要获取当前对象的id,需要获取obj_id
from django.contrib import admin from .models import Comment # actions添加模型动作 def disable_commentstatus(modeladmin, request, queryset): queryset.update(is_enable=False) def enable_commentstatus(modeladmin, request, queryset): queryset.update(is_enable=True) disable_commentstatus.short_description = '隐藏评论' enable_commentstatus.short_description = '显示评论' class CommentAdmin(admin.ModelAdmin): list_display = ('id', 'commentator', 'article', 'parent_comment', 'is_enable', 'created_time') list_display_links = ('id', 'commentator') list_filter = ('commentator', 'article', 'is_enable') actions = [disable_commentstatus, enable_commentstatus] def formfield_for_foreignkey(self, db_field, request, *args, **kwargs): if db_field.name == 'parent_comment': try: obj_id = request.resolver_match.args[0] #这里获取当前对象id,非常重要 kwargs['queryset'] = Comment.objects.filter(parent_comment=None).exclude(id=int(obj_id)) # 添加过滤条件 except: kwargs['queryset'] = Comment.objects.filter(parent_comment=None) return super(CommentAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) admin.site.register(Comment, CommentAdmin)
以上是“如何对django后台admin下拉框进行过滤”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联成都网站设计公司行业资讯频道!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。