您的位置:首页 > 编程语言 > Go语言

django admin中配置搜索域是一个外键时如何处理

2016-06-14 15:33 459 查看
python 2.7.11

django 1.8.4

错误内容:related Field has invalid lookup: icontains

我原来默认认为在处理外键搜索的时候,django会自动将该外键的行数据以str()化之后进行搜索,但其实并不是这样的,如果将外键加入到搜索域中,需要明确写出来。

这个是我从网上查到的解决方案,测试可用,如下:

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 为例)

# 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,而该是另一个表的明确的一个字段。所以我们需要指定特定的字段
"本表外键字段__外键所在表需查询字段"。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django