对django后台admin下拉框进行过滤的实例

 更新时间:2019年07月26日 12:00:26   作者:累兰羽  
今天小编就为大家分享一篇对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下拉框进行过滤的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 分布式全文检索引擎ElasticSearch原理及使用实例

    分布式全文检索引擎ElasticSearch原理及使用实例

    这篇文章主要介绍了分布式全文检索引擎ElasticSearch原理及使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • pandas中ix的使用详细讲解

    pandas中ix的使用详细讲解

    这篇文章主要介绍了pandas中ix的使用详细讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • pycharm激活码免费分享适用最新pycharm2020.2.3永久激活

    pycharm激活码免费分享适用最新pycharm2020.2.3永久激活

    免费为大家分享Pycharm激活码,适用最新版pycharm2020.2.3永久激活,pycharm2018,pycharm2019也可永久激活,可成功激活到2089年
    2020-11-11
  • pandas如何将dataframe中的NaN替换成None

    pandas如何将dataframe中的NaN替换成None

    这篇文章主要介绍了pandas如何将dataframe中的NaN替换成None问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 详细介绍Ruby中的正则表达式

    详细介绍Ruby中的正则表达式

    这篇文章主要介绍了详细介绍Ruby中的正则表达式,文章中还给出了用于搜索和替换的正则表达式的使用实例,需要的朋友可以参考下
    2015-04-04
  • 浅析python中的del用法

    浅析python中的del用法

    python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以帮助深入理解python的内存方面的问题。这篇文章主要介绍了python中的del用法,需要的朋友可以参考下
    2020-09-09
  • Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例

    Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例

    这篇文章主要介绍了Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法,结合实例形式分析了Python针对类实例进行排序相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • python最短路径的求解Dijkstra算法示例代码

    python最短路径的求解Dijkstra算法示例代码

    这篇文章主要给大家介绍了关于python最短路径的求解Dijkstra算法的相关资料,并使用Python的heapq模块实现该算法,通过示例展示了如何从节点0到节点8求解最短路径,需要的朋友可以参考下
    2024-11-11
  • python中的单下划线与双下划线以及绝对导入与相对导入

    python中的单下划线与双下划线以及绝对导入与相对导入

    这篇文章主要介绍了python中的单下划线与双下划线以及绝对导入与相对导入说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 使用pycharm创建Django项目失败的解决方案

    使用pycharm创建Django项目失败的解决方案

    使用PyCharm创建Django项目时遇到无法运行的问题,可以检查Python的安装路径设置是否正确,在PyCharm的设置中找到项目解释器的位置,确保路径正确,如果不确定Python的安装位置,可以在命令提示符中使用“where Python”命令查询
    2024-09-09

最新评论