问题:

  当我在给某一张表加上外键搜索的时候,会出现 TypeError: Related Field got invalid lookup: icontains

问题原因:

  a 表关联 b表,也就是说a表有外键关联b表,我们只需要在 b表中admin注册时候在admin类中添加外键搜索功能,那么在创建a表数据的时候,可以通过搜索拿到结果,那么这个错误来源不是这个字段 relfield_style 的错误,而是xadmin本身那个搜索框 search_fields的错误,因为b表中又有外键关联c表,b表admin中把外键添加到 search_fields 搜索字段中,从而产生搜索错误,search_fields 是声明搜索框搜索哪些字段

那,如何解决?

  只需要在每个表的admin中把过滤字段中把这个外键字段取消搜索注册,也就是说,外键字段不应该添加到 search_fields 搜索功能中, 而 relfield_style 字段应该写在 被关联的表的admin中

# 错误的课程机构表admin, search_fields 中city字段在表中又关联 citydict表,city是CourseOrg表的外键,不应该出现在search_fields字段中
class CourseOrgAdmin(object):
list_display = ['name', 'desc', 'category', 'click_nums', 'fav_nums', 'image', 'address', 'city', 'add_time']
search_fields = ['name', 'desc', 'category', 'click_nums', 'fav_nums', 'image', 'address', 'city']
list_filter = ['name', 'desc', 'category', 'click_nums', 'fav_nums', 'image', 'address', 'city', 'add_time'] # 让其他关联此表的外键搜索功能,
relfield_style = 'fk-ajax' # 正确的,主要区别是把 search_fields 中外键字段去掉 Course 关联 CourseOrg, relfield_style写在CourseOrg表中,字段来自哪些写在哪
class CourseOrgAdmin(object):
list_display = ['name', 'desc', 'category', 'click_nums', 'fav_nums', 'image', 'address', 'city', 'add_time']
search_fields = ['name', 'desc', 'category', 'click_nums', 'fav_nums', 'image', 'address']
list_filter = ['name', 'desc', 'category', 'click_nums', 'fav_nums', 'image', 'address', 'city', 'add_time'] # 让其他关联此表的外键搜索功能
relfield_style = 'fk-ajax' # 假如课程表关联课程机构,一对多, course_org 是关联到CourseOrgA的字段
# 过滤器 list_filter 和 显示列 list_display 可以添加,搜索框 search_fields 不能加入任何外键字段
class CourseAdmin(object):
list_display = ['course_org', 'name', 'desc', 'detail', 'learn_times', 'degree', 'students', 'fav_nums', 'image', 'click_nums', 'add_time']
search_fields = ['name', 'desc', 'detail', 'degree', 'students', 'fav_nums', 'image', 'click_nums']
list_filter = ['course_org', 'name', 'desc', 'detail', 'learn_times', 'degree', 'students', 'fav_nums', 'image', 'click_nums', 'add_time']

  

Django_xadmin_应用外键搜索功能错误的更多相关文章

  1. mysql之创建外键报150错误的处理方法

    这几天由于在赶项目进度,也就没有及时记录下自己的学习情况 ,在完成项目的这段时间里,碰到了很多问题,在解决问题的过程中学习了不少技巧. 这里就主要介绍一下在mysql数据库中为表之间建立外键时报100 ...

  2. 解决code first Migration 增加外键时出现错误的问题

    先上模型 Comment public class Comment { [Key] public int CommentId { get; set; } [Required] public int S ...

  3. mysql 创建外键时发生错误的原因和解决方法

    可以去网上查看错误号,就能知道到底哪里出错了 https://zhidao.baidu.com/question/359868536.html 这里1452对应的错误是因为建立外键的表中还有数据,所以 ...

  4. 分布式网上商城项目-solr搜索功能错误

    1.RuntimeException错误 java.lang.RuntimeException: org.apache.ibatis.binding.BindingException: Invalid ...

  5. SQL反模式学习笔记5 外键约束【不用钥匙的入口】

    目标:简化数据库架构 一些开发人员不推荐使用引用完整性约束,可能不使用外键的原因有一下几点: 1.数据更新有可能和约束冲突: 2.当前的数据库设计如此灵活,以至于不支持引用完整性约束: 3.数据库为外 ...

  6. Constraint6:更新外键约束(Foreign Key Constraint)的引用列

    在SQL Server中,表之间存在引用关系,引用关系通过创建外键约束(Foreign Key Constraint)实现.如果一个Table中的column被其他Table引用,那么该表是参考表,或 ...

  7. Mysql添加外键约束

    简单说一下使用外键的好处 1.完整性约束 比如:用户表中有字段 用户编号(id) , 名称(username)设备表中有字段 设备编号(id) , 设备名称(devicename) 设备属于的用户编号 ...

  8. 三、Sql Server 基础培训《进度3-是否使用外键(知识点学习)》

    学习作业3: 问题1:你觉得外键有哪些适用情况?哪些不适用情况?   问题2:本次实战案例,由你来架构,你觉得有必要建立外键吗? 说明你的理由?     ======================= ...

  9. mysql的引擎问题,主键和外键的创建问题,以及创建外键不成功,却创建了一个索引

    mysql的引擎问题: 需要知道的三个引擎:InnoDB--是一个事务处理引擎,不支持全文检索,支持事务操作,即DML操作: Memory--是一个数据存储在内存,速度很快,功能上等同于MyIsam, ...

随机推荐

  1. 编码(ACSII unicod UTF-8)、QT输出中文乱码深入分析

    总结: 1. qt输出中文乱码原因分析 qt的编程环境默认是utf-8编码格式(关于编码见下文知识要点一): cout << "中文" << endl; 程 ...

  2. Java学习笔记25(System类)

    System类,系统类,包含的是静态方法,无法创建对象 这里介绍几个简单的方法,其他一些在后边用到的时候会讲 类方法: currentTimeMillis():获取当前毫秒数 package demo ...

  3. 5分钟了解MySQL5.7的undo log在线收缩新特性

    Part1:写在最前 在MysQL5.6版本中,可以把undo log 回滚日志分离到一个单独的表空间里:其缺点是不能回收空间大小,until MysQL5.7,but MariadDB10.1暂不支 ...

  4. HyperLedger Fabric基于zookeeper和kafka集群配置解析

    简述 在搭建HyperLedger Fabric环境的过程中,我们会用到一个configtx.yaml文件(可参考Hyperledger Fabric 1.0 从零开始(八)--Fabric多节点集群 ...

  5. VirtualBoX虚拟机里安装linux系统,在虚拟系统里安装增强功能报错解决方法

    http://www.cnblogs.com/MoShin/archive/2012/04/25/2469156.html 当我们在虚拟机里安装lixunx系统,避免不了的要安装增强功能,无论是视觉效 ...

  6. ionic build android 中的报错详细原因以及解决方法

    一.执行打包命令 ionic build android 1.报错: 原因: 其实也并非报错,但是会一直在下载gradle,由于网络或者其他原因,导致下载比较慢, 解决方案: 手动下载gradle,并 ...

  7. js 数组的常用方法

    pop,push,reverse,shift,sort,splice,unshift 会改变原数组 join,concat,indexOf,lastIndexOf,slice,toString 不会改 ...

  8. es6的常用语法

    最常用的ES6特性 let, const, class, extends, super, arrow functions, template string, destructuring, defaul ...

  9. 解决Fiddler出现无线弹框 "creation of the root certificate was not successful”的问题

    打开Fiddler 访问:http://localhost:8888/ 安装证书,如果提示没有证书(8888是你在Tool->Fiddler Option->Connections设置的F ...

  10. 数据结构-堆 C与C++的实现

    堆,是一种完全二叉树.而且在这颗树中,父节点必然大于(对于小顶堆为小于)子节点. 关于树的概念不了解可以看这里:http://www.cnblogs.com/HongYi-Liang/p/723144 ...