千锋扣丁学堂Python培训之django后台admin下拉框进行过滤

2019-07-26 13:42:47 2346浏览

今天千锋扣丁学堂Python培训老师给大家分享一篇关于django后台admin下拉框进行过滤的实例详解,首先使用djangoadmin自带后台,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)

以上就是千锋扣丁学堂Python培训之django后台admin下拉框进行过滤关于的全部内容,希望能给大家一个参考,想要了解更多关于Python和人工智能方面内容的小伙伴,请关注扣丁学堂Python培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Python开发环境搭建视频,Python培训后的前景无限,行业薪资和未来的发展会越来越好的,扣丁学堂老师精心推出的Python视频教程定能让你快速掌握Python从入门到精通开发实战技能。扣丁学堂Python技术交流群:279521237。


扣丁学堂微信公众号                          Python全栈开发爬虫人工智能机器学习数据分析免费公开课直播间


      【关注微信公众号获取更多学习资料】         【扫码进入Python全栈开发免费公开课】



查看更多关于"Python开发资讯"的相关文章>

标签: Python培训 Python视频教程 Python在线视频 Python学习视频 Python培训班

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号