对django后台admin下拉框进行过滤的实例
使用djangoadmin自带后台
admin后台下拉显示的时候需要添加过滤条件,
因为表是自己关联自己,同时还需要过滤掉自己,需要获取当前对象的id,需要获取obj_id
fromdjango.contribimportadmin from.modelsimportComment #actions添加模型动作 defdisable_commentstatus(modeladmin,request,queryset): queryset.update(is_enable=False) defenable_commentstatus(modeladmin,request,queryset): queryset.update(is_enable=True) disable_commentstatus.short_description='隐藏评论' enable_commentstatus.short_description='显示评论' classCommentAdmin(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] defformfield_for_foreignkey(self,db_field,request,*args,**kwargs): ifdb_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) returnsuper(CommentAdmin,self).formfield_for_foreignkey(db_field,request,**kwargs) admin.site.register(Comment,CommentAdmin)
以上这篇对django后台admin下拉框进行过滤的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。