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)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值