首先看下log
TypeError at /admin/order/order/
Related Field has invalid lookup: icontains
Request Method: GET
Request URL: http://localhost:8888/admin/order/order/?q=11
Django Version: 1.4.5
Exception Type: TypeError
Exception Value:
Related Field has invalid lookup: icontains
Exception Location: /home/lzz/Virtualenv/blog1_django_1.4/env/local/lib/python2.7/site-packages/django/db/models/fields/related.py in get_prep_lookup, line 142
Python Executable: /home/lzz/Virtualenv/blog1_django_1.4/env/bin/python
Python Version: 2.7.3
Python Path:
['/home/lzz/Virtualenv/blog1_django_1.4/eshop',
'/home/lzz/Virtualenv/blog1_django_1.4/env/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',
'/home/lzz/Virtualenv/blog1_django_1.4/env/local/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg',
'/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',
'/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg',
'/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7',
'/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/plat-linux2',
'/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/lib-tk',
'/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/lib-old',
'/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/lib-dynload',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/home/lzz/Virtualenv/blog1_django_1.4/env/local/lib/python2.7/site-packages',
'/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/site-packages']
Server time: 星期三, 15 五月 2013 08:10:00 +0800
这是在两个实体table中,外键引用以后,admin模块添加search框出现的问题,来看看情况
models.py中
class Product(models.Model):
name = models.CharField('product name', max_length=30)
Order(models.Model):
product = models.ForeignKey("Product") #外键引用产品类
admin.py中
class OrderAdmin(admin.ModelAdmin):
search_fields = ('product',) #问题就是出在这里
在admin中我们
就出现上面的错误了!
解决办法:
admin.py的代码修改一下
class OrderAdmin(admin.ModelAdmin):
search_fields = ('product__name',) #问题就是出在这里
作为外键django默认是把id和order类关联,这里不能直接写product , 而是product的一个具体字段,product是个对象,没法直接查询。
注! 这里是两个下划线 product__name