Django admin模块使用search时报错:django.core.exceptions.FieldError: Related Field got invalid lookup: contains
日志如下:
<class 'django.core.handlers.wsgi.WSGIRequest'>
------------registered_admins: {'spaceCloud': {'imageinfo': <spaceCloud.space_admin.ImageInfoAdmin object at 0x103f02f60>, 'physicalnetinfo': <spaceCloud.space_admin.PhysicalNetInfoAdmin object at 0x103f02f98>, 'reposoftinfo': <spaceCloud.space_admin.RepoSoftInfoAdmin object at 0x103f100b8>, 'app': <spaceCloud.space_admin.AppAdmin object at 0x103f02eb8>, 'repositories': <spaceCloud.space_admin.RepositoriesAdmin object at 0x103f10080>, 'ippoll': <spaceCloud.space_admin.IPpollAdmin object at 0x103f02fd0>, 'containerinfo': <spaceCloud.space_admin.ContainerInfoAdmin object at 0x103f02ef0>, 'hostassociated': <spaceCloud.space_admin.HostAssociatedAdmin object at 0x103f02f28>, 'imageproject': <spaceCloud.space_admin.ImageProjectAdmin object at 0x103f10048>}, 'asset': {'server': <asset.space_admin.ServerAdmin object at 0x103f02c88>, 'asset': <asset.space_admin.AssetAdmin object at 0x103f02c50>, 'account': <asset.space_admin.AccoutAdmin object at 0x103f02c18>, 'role': <spaceAdmin.admin_base.BaseAdmin object at 0x103f02be0>}}
------------model_name: imageinfo
------------model_name: imageinfo
------------admin_class: <class 'spaceCloud.space_admin.ImageInfoAdmin'>
--------------filter_condtions {}
--------------------querysets,filter_condtions <QuerySet [<ImageInfo: 6.8>, <ImageInfo: v1.0_20180412_2353>, <ImageInfo: v1.0_20180412_2302>, <ImageInfo: v1.0_20180412_1452>, <ImageInfo: v1.0_20180412_1439>, <ImageInfo: v1.0_20180412_1237>, <ImageInfo: v1.0_20180412_1205>, <ImageInfo: v1.0_20180412_1157>, <ImageInfo: v1.0_20180412_1202>, <ImageInfo: v6.2_20180403_1130>, <ImageInfo: v1.0_20180412_1200>, <ImageInfo: v6.2_20180403_1125>, <ImageInfo: v6.2_20180403_1050>, <ImageInfo: v6.2_20180403_1033>, <ImageInfo: v6.2_20180403_1025>, <ImageInfo: v6.2_20180403_2211>, <ImageInfo: v6.2_20180403_2151>, <ImageInfo: latest>, <ImageInfo: v1.0_20180424_1154>, <ImageInfo: v1.0_20180419>, '...(remaining elements truncated)...']> {}
----------------admin_class.search_fields: ['project_name', 'repo_name', 'name']
------------------search_field: project_name
------------------search_field: repo_name
------------------search_field: name
------------------q_obj: (OR: ('project_name__contains', 'account'), ('repo_name__contains', 'account'), ('name__contains', 'account'))
Internal Server Error: /spacecloud/spacecloud_image/
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/jianglinguo/PycharmProjects/Space/spaceCloud/views.py", line 94, in spacecloud_image
view_data = admin_views.model_table_list(request,app_name,model_name,no_render=True)
File "/Users/jianglinguo/PycharmProjects/Space/spaceAdmin/views.py", line 144, in model_table_list
querysets,q_val = get_search_objs(request,querysets,admin_class)
File "/Users/jianglinguo/PycharmProjects/Space/spaceAdmin/views.py", line 73, in get_search_objs
search_results = querysets.filter(q_obj)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/query.py", line 784, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/query.py", line 802, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/sql/query.py", line 1250, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/sql/query.py", line 1270, in _add_q
current_negated, allow_joins, split_subq)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/sql/query.py", line 1276, in _add_q
allow_joins=allow_joins, split_subq=split_subq,
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/sql/query.py", line 1201, in build_filter
raise FieldError('Related Field got invalid lookup: {}'.format(lookups[0]))
django.core.exceptions.FieldError: Related Field got invalid lookup: contains
[27/Apr/2018 08:34:33] "GET /spacecloud/spacecloud_image/?_q=account HTTP/1.1" 500 111242
表imageinfo,外键引用的字段(ForeignKey字段),admin模块添加search框出现的问题
class ImageInfo(models.Model):
digest = models.CharField(max_length=128,blank=True,null=True)#"
name = models.CharField(u'版本',max_length=32, null=True, blank=True) #v5.3_20180301",
architecture = models.CharField(max_length=32,null=True,blank=True)#amd64",
os = models.CharField(max_length=32, null=True, blank=True)#linux",
docker_version = models.CharField(max_length=32,blank=True, null=True)#1.12.6",
author = models.CharField(max_length=64 ,blank=True,null=True)#
repo_name = models.ForeignKey("Repositories",blank=True,null=True)
repo_addr = models.ForeignKey('RepoSoftInfo',max_length=64, blank=True, null=True ,default=1)
自定义的 admin,space_admin.py文件内容
修改前:
class ImageInfoAdmin(BaseAdmin):
list_display = ['id','project_name','repo_name','name','docker_version','author','repo_addr','update_time']
list_filter = []
list_per_page = 15
search_fields = ['project_name','repo_name','name'] #问题就在这里'project_name','repo_name'这两个是ForeignKey字段,直接取是取不到的会报错 修改后:
class ImageInfoAdmin(BaseAdmin):
list_display = ['id','project_name','repo_name','name','docker_version','author','repo_addr','update_time']
list_filter = []
list_per_page = 15
search_fields = ['project_name__name','repo_name__name','name'] #问题就在这里'project_name','repo_name'这两个是ForeignKey字段,应用跨表去取ForeignKey表里面的字段 修改后问题解决 OK 了
总结一下
ForeignKey
作为外键django默认是把Repositories类的id和project_name字段关联的,不能直接写project_name 具体字段,project_name是个对象,没法直接查询。
project_name__name 双下线来查Repositories表里面的具体字段内容。
Django admin模块使用search时报错:django.core.exceptions.FieldError: Related Field got invalid lookup: contains的更多相关文章
- 在使用django admin的后台搜索时报错
在使用django admin的后台搜索时报错 百度说在search_fields中定义了非字符串字段,最后发现author引用了外键 解决办法: 有外健时应写成: 本表外键字段__外键所在表所需要查 ...
- Django中search fields报错:related Field has invalid lookup: icontains
models.py 文件 # coding:utf8from django.db import models class Book(models.Model): name = model ...
- 使用xadmin搜索search_fields报错:Related Field got invalid lookup: icontains
一.问题描述 使用xadmin实现Django后台功能时,使用search_fields = [字段名,字段名],在搜索的时候报错Related Field got invalid lookup: i ...
- Django admin模块无法调用css样式文件
在使用Django Admin开发时,发现admin模块css样式文件丢失,无法调用,使火狐浏览器提示: 此 URL 的资源不是文本: http://127.0.0.1:8000/statics/ad ...
- 配置Django环境后,运行时报错
(背景)安装完Django,并配置完成. 在setting.py中设置了数据库时,出现的报错. 点击查看 数据库配置 DATABASES = { 'default': { # 'ENGINE': 'd ...
- Django创建表时报错django.db.utils.InternalError: (1366问题解决记录
问题出现 执行Python manage.py makemigrations生成创建表的py文件 执行python manage.py migrate创建数据表 界面出现报错 问题原因 网上搜索原因, ...
- django admin模块使用
BBS之admin组件的使用 1.创建超级管理员 创建超级管理员 一. tools>>>>runmanagepyTask>>>>>createsu ...
- django admin 模块添加 static
目前路径是在 /var/www/jastme/static 但是admin的静态文件不在这个位置,那么怎么办呢? 首先到项目下,就是有manage.py的这个目录 编辑项目下的setting.py 首 ...
- django admin 如何去掉s 如何去掉django admin 各个模块后面的s
其中加上红色标记的内容,业务管理员后面就不会有 s 了 class UsrMngUser(models.Model): user_name = models.CharField("用户名称& ...
随机推荐
- 从零开始的全栈工程师——js篇2.16
js操作css样式 div.style.width=“200px” 在div标签内我们添加了一个style属性 并设定了width值 这种写法会给标签带来了大量的style属性 跟实际项目是不符的 我 ...
- uvm_analysis_port——TLM1事务级建模方法(二)
UVM中的TLM1端口,第一类是用于uvm_driver 和uvm_sequencer连接端口,第二类是用于其他component之间连接的端口,如uvm_monitor和uvm_scoreboard ...
- GIT教程笔记
GIT的工作流程: 先在工作目录中添加.修改文件 一般是在工作目录建立你的工程文件夹,然后通过命令行进入文件夹后 git init 初始化 将需要进行版本管理的文件放入缓存区 git add 文件 ...
- UVA 12034 Race(递推)
递推,f[i = i个名次][j = 共有j个人] = 方案数. 对于新加入的第j个人,如果并列之前的某个名次,那么i不变,有i个可供并列的名次选择,这部分是f[i][j-1]*i, 如果增加了一个名 ...
- POJ-3080 Blue Jeans---字符串+暴力
题目链接: https://vjudge.net/problem/POJ-3080 题目大意: 找最长的公共字串(长度>=3),长度相同就找字典序最小的 解题思路: 枚举第一个串的所以子串,处理 ...
- 为项目创建podfile
由于写项目 不常用到,容易忘记,记录一下 第一步:新建一个项目: 第二步:打开终端,输入 cd 第三步:把项目拖入终端,(获取项目路径) 第四步:回车,输入 pod init (生成podfile 文 ...
- 【转】VS2010发布、打包安装程序(超全超详细)
1. 在vs2010 选择“新建项目”→“ 其他项目类型”→“ Visual Studio Installer→“安装项目”: 命名为:Setup1 . 这是在VS2010中将有三个文件夹, 1.“应 ...
- python_34_文件操作3
f=open('yesterday',encoding='utf-8') print(f.tell())#文件句柄所在指针指向的位置,即光标在哪里(按字符计数) f.readline()#读一行 pr ...
- 学习笔记 | java反序列化漏洞分析
java反序列化漏洞是与java相关的漏洞中最常见的一种,也是网络安全工作者关注的重点.在cve中搜索关键字serialized共有174条记录,其中83条与java有关:搜索deserialized ...
- maven手动导入jar包到本地仓库
一.cmd进入maven的bin目录下(我的目录是E:\cloud_cms\apache-maven-3.5.4\bin) cd E:\cloud_cms\apache-maven-3.5.4\bin ...