related Field has invalid lookup: icontains 解决方法

时间:2021-09-24 08:10:05

models.py 文件

# coding:utf8
from django.db import models

class Book(models.Model):

   
    name =
models.CharField(max_length=255)
    title =
models.CharField(max_length=255)
    price =
models.IntegerField()
    ...
    
class Category(models.Model):
    
   
CATEGORY_CHOICES = (
       
('00', 'English'),
       
('01', 'Computer'),
    )
    
    book =
models.ForeignKey(Book)
    category =
models.CharField(max_length=255, choices=CATEGORY_CHOICES)
    remark =
models.CharField(max_length=255)
    ...

admin.py 文件(以 category
为例)

 
转自:http://blog.sina.com.cn/s/blog_90bc5fc601012rk0.html
# coding: utf8
from django.contrib import admin
from django import forms

from .models import Category

class CategoryAdmin(admin.ModelAdmin):

search_fileds = ('book__name',
'book__title', 'book__price', 'category') 
# 设置搜索栏范围,如果有外键,要注明外键的哪个字段,双下划线
    list_display
= ('book', 'category')  #
在页面上显示的字段,若不设置则显示 models.py 中 __unicode__(self) 中所返回的值
   
list_display_links = ('category')  # 设置页面上哪个字段可单击进入详细页面
    fields =
('category', 'book')  #
设置添加/修改详细信息时,哪些字段显示,在这里 remark 字段将不显示
    
admin.site.register(Category, CategoryAdmin)

[说明]
在使用 Django admin 系统中的搜索时可能会出现“related Field has invalid lookup:
icontains
”错误,主要原因是外键查询是需要指定相应的字段的。外键不应该只是一个model,而该是另一个表的明确的一个字段。所以我们需要指定特定的字段
"本表外键字段__外键所在表需查询字段"。