Django_xadmin_TypeError: Related Field got invalid lookup: icontains

问题:

  当我在给某一张表加上外键搜索的时候,会出现 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‘]

  

时间: 2024-11-07 00:47:55

Django_xadmin_TypeError: Related Field got invalid lookup: icontains的相关文章

django搜索页面,并解决“Related Field has invalid lookup: icontains”错误

django版本1.4.5 一般网站都是需要搜索栏目的,我的项目也需要,于是做了 首先,写视图 1 #这个并不是我的项目,仅仅用它做个例子,解决相关问题 2 from django.db.models import Q 3 from models import Book 4 5 def search(request): 6 query = request.GET.get('q', '') 7 if query: 8 qset = ( 9 Q(title__icontains=query) | 1

django使用search_fields报错

django使用search_fields报错(in get_lookup_constraint) FieldError at /api/workorder/order/ Related Field got invalid lookup: icontains Request Method: GET Request URL: http://127.0.0.1:8000/api/workorder/order/?search=1 Django Version: 2.0 Exception Type:

django如何在 search_fields和list_filter 中包含外键字段

django如何在 search_fields和list_filter 中包含外键字段 我们知道在 admin.py 中定义 search_fields 可以控制在后台管理界面中能够搜索的字段. 但是,当 search_fields 包含外键字段时,此时进行搜索会报错: TypeError at /admin/hello/foo/ Related Field has invalid lookup: icontains 解决的办法是修改 search_fields 中的外键字段名称. 将 sear

Video for Linux Two API Specification Revision 2.6.32【转】

转自:https://www.linuxtv.org/downloads/legacy/video4linux/API/V4L2_API/spec-single/v4l2.html Video for Linux Two API Specification Revision 2.6.32 Michael H Schimek <[email protected]> Bill Dirks Original author of the V4L2 API and documentation. Hans

model字段对象和forms字段对象的区别和联系

一.model字段对象 (一)_meta _meta是django.db.models.options.Options的实例,获取字段对象可通过模型类来进行获取,而_meta可提供如下功能: 获取模型的所有字段实例 通过名称获取模型的单个字段实例 1.获取模型的单个字段实例 In [19]: models.Book._meta.get_field("title") Out[19]: <django.db.models.fields.CharField: title> 2.获

ovirt user guide

Contents [hide] 1 ?Accessing the User Portal 1.1 Logging in to the User Portal 1.2 Logging out of the User Portal 1.3 Logging in for the First Time: Installing the Engine Certificate 1.3.1 Installing oVirt Certificate in Firefox 2 ?Installing Support

Linux Process Management &amp;&amp; Process Scheduling Principle

目录 1. 引言 2. 进程优先级 3. 进程的生命周 4. 进程表示 5. 进程管理相关的系统调用 6. 进程调度 7. 完全公平调度类 8. 实时调度类 9. 调度器增强 10. 小结 1. 引言 在多处理器系统中,可以真正并行运行的进程数目,取决于物理CPU的数目内核和处理器建立了多任务的"错觉",即可以并行做几种操作,这是通过以很短的间隔在系统运行的应用程序之间不停切换而做到的,这种系统管理方式引发了几个内核必须解决的问题 1. 除非明确地要求,否则应用程序不能彼此干扰,例如

Linux进程调度器的设计--Linux进程的管理与调度(十七)

日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 前景回顾 进程调度 内存中保存了对每个进程的唯一描述, 并通过若干结构与其他进程连接起来. 调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换. 内核必须提供一种方法, 在各个进程之间尽可能公平地

ArcEngine异常编码速查(转)

序号 错误代码 错误描述 错误名称 0 HRESULT:0x80040201 "Failed to load a resource (string, icon, bitmap, etc)." LOADING_RESOURCE 1. HRESULT:0x80040202 The index passed was not within the valid range. INDEX_OUT_OF_RANGE 2. HRESULT:0x80040203 The operation is not