`

model,admin,table如下service页面查询host时出错related Field has invalid lookup: icontains

阅读更多

table:

CREATE TABLE `host` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cmdb_sn` varchar(32) NOT NULL,
  `internal_ip` varchar(16) NOT NULL,
  `external_ip` varchar(16) NOT NULL,
  `idc_name` varchar(16) NOT NULL,
  `status` enum('online','unused','repair') DEFAULT 'unused',
  `description` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8

CREATE TABLE `service` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `host_id` int(11) unsigned NOT NULL,
  `port` int(10) unsigned NOT NULL,
....
  PRIMARY KEY (`id`),
  UNIQUE KEY `host_id` (`host_id`,`port`),
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1
 

model:

class Host(models.Model):
#    id=models.IntegerField(max_length=10)
    cmdb_sn= models.CharField(max_length=32)
    internal_ip= models.CharField(max_length=16)
    external_ip= models.CharField(max_length=16)
    idc_name= models.CharField(max_length=16)
    status = models.IntegerField(max_length=10)
    description = models.CharField(max_length=32)
    def __unicode__(self):
         return '%s' %(self.internal_ip)
    class Meta:
        db_table = 'host'
        ordering=['internal_ip']
 
class Service(models.Model):
    host = models.ForeignKey(Host)
    port= models.IntegerField(max_length=10)
    role= models.IntegerField(max_length=10)
    status= models.IntegerField(max_length=10)
    description = models.CharField(max_length=32)
    def __unicode__(self):
         return '%s id:%s host:%s' %(self.port,self.id,self.host)
    class Meta:
        db_table = 'service'
        ordering=['port']
admin:
class ServiceAdmin(admin.ModelAdmin):
    list_display = ('port', 'host','role','status','description')
    search_fields = ('id','port', 'host,'role','status') 
 

service页面查询host时出错related Field has invalid lookup: icontains

改 search_fields =('id','port', 'host__internal_ip','role','status') ok~

class ServiceAdmin(admin.ModelAdmin):
    list_display = ('port', 'host','role','status','description')

    search_fields = ('id','port', 'host__internal_ip','role','status')

 

Related Field has invalid lookup: icontains。
原来外键查询是需要指定相应的字段的。外键不只是一个model,而该是另一个表的明确的一个字段。
所以我们需要指定特定的字段 "本表外键字段__外键所在表需查询字段"

参考:http://code.djangoproject.com/ticket/2331

 

Closing as Ian stated it was an error on his part. Ian: If there's still a problem with Django that needs to be fixed, please reopen.

comment:6Changed 21 months ago by AntonBessonov

This error raised if use search_fields in admin.py. E.x:

class AnotherModel(models.Model):
txt = models.CharField(_('Text'), max_length=255)
 
 class MyModel(models.Model):
prop = models.ForeignKey(AnotherModel)

You must use:

class MyModelAdmin(admin.ModelAdmin):
search_fields = ('prop__txt')

Maybe must raise properly exception?


转自:http://hi.baidu.com/%C3%CE%C0%EF%CF%E3%B0%CD%C0%AD/blog/item/2f93659050f9d799a877a4c6.html

分享到:
评论

相关推荐

    在django admin中配置搜索域是一个外键时的处理方法

    错误内容:related Field has invalid lookup: icontains 我原来默认认为在处理外键搜索的时候,django会自动将该外键的行数据以str()化之后进行搜索,但其实并不是这样的,如果将外键加入到搜索域中,需要明确写...

    Nginx常见错误

    在尝试启动Nginx时,可能会遇到如下的错误提示:“sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory”。这通常意味着系统中缺少必要的...

    rlexception: invalid roslaunch xml syntax: no element found: lin

    在ROS(Robot Operating System)开发过程中,遇到`rlexception: invalid roslaunch xml syntax: no element found: line 1, column 0`这样的错误信息时,表明当前的`.launch`文件存在XML语法错误。具体来说,可能是...

    Invalid ROM Table

    - 使用Keil下载或调试程序时遇到的“Invalid ROM Table”错误提示需要英文阅读能力来理解和解决。 - 解决这个问题可能涉及到硬件和软件两方面的调试,包括检查硬件连接、电源、JTAG调试接口以及程序的配置设置等。 ...

    cmake-3.18.1-win64-x64.msi

    cmake-3.18.1 64位安装包。官网下载的。

    高德地图自定义运动轨迹

    当轨迹点数量庞大时,直接渲染可能导致地图加载缓慢。为此,可以采用分段加载、动态加载、屏幕内点渲染等策略,提高用户体验。 9. **地图服务集成** 高德地图API还支持与其他服务集成,如实时交通状况、天气信息...

    Django admin 实现search_fields精确查询实例

    如果在使用 xadmin 时遇到类似的问题,比如使用 `search_fields` 报错 `RelatedField got invalid lookup: icontains`,这通常是因为 `search_fields` 中包含了非字符串类型的字段。解决这个问题的方法是删除 `...

    启动异常invalid constant type:15的解决方案

    "启动异常invalid constant type:15的解决方案" "启动异常invalid constant type:15"是一种常见的Java异常,主要是由于Java类加载机制中的一个bug所引起的。在Java中,类加载器会将class文件加载到内存中,并将其...

    dubbo-admin 管理后台2.5.4 for JDK8

    Invalid property 'URIType' of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]: Bean property 'URIType' is not writable or has an invalid setter method. Does the parameter type ...

    重装win7旗舰版系统后启动时提示invalid partition table的解决方法.docx

    重装win7旗舰版系统后启动时提示invalid partition table的解决方法.docx

    config.sub Invalid configuration machine/OS not recognized问题解决

    config.sub Invalid configuration `xxx': machine/OS `XXX' not recognized问题解决

    c++ std::invalid_argument应用

    在C++编程中,`std::invalid_argument` 是一个异常类,用于表示当函数或方法接收到不合法或无效的参数时抛出的错误。这个类是`std::logic_error` 的子类,而`std::logic_error` 又是`std::exception` 的子类。`std::...

    google浏览器显示出错:status_invalid_image_hash.docx

    ### Google浏览器显示出错:status_invalid_image_hash #### 问题描述 在Windows 10系统上安装了最新版的Google Chrome浏览器后,在正常使用一段时间后突然出现了“STATUS_INVALID_IMAGE_HASH”的错误状态码,导致...

    yolov5如何训练以及,训练时遇到的一些报错问题解决

    本文将详细讲解如何训练 Yolov5 模型,并解决训练时遇到的常见报错问题。 修改配置文件 要训练 Yolov5 模型,首先需要修改配置文件。在 data 文件夹下,需要修改 voc.yaml 文件,例如将其重命名为项目相关的文件,...

    genymotion缺失文件

    genymotion manager一直打不开,一直报如下错误, Loading Genymotion library Genymotion directory: G:\Genymotion Trying to initialize engine Invalid path: VBoxManage Initialize Engine: failed 因为少了这...

    Python 爬虫之超链接 url中含有中文出错及解决办法

    Python 爬虫之超链接 url中含有中文出错及解决办法 python3.5 爬虫错误: UnicodeEncodeError: 'ascii' codec can't encode characters 这个错误是由于超链接中含有中文引起的,超链接默认是用ascii编码的,所以不...

    vue樱花漫天效果文件

    在`created()`、`mounted()`、`updated()`等钩子函数中,我们可以编写代码来初始化樱花的位置、加载图片资源或在数据变化时更新动画状态。 对于动画效果,Vue提供了`transition`和`transition-group`组件来实现过渡...

Global site tag (gtag.js) - Google Analytics