这篇文章主要为大家展示了“如何对django后台admin下拉框进行过滤”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何对django后台admin下拉框进行过滤”这篇文章吧。
使用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下拉框进行过滤”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。