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.py的代码修改一下
class OrderAdmin(admin.ModelAdmin): search_fields = ('product__name',) #问题就是出在这里作为外键django默认是把id和order类关联,这里不能直接写product , 而是product的一个具体字段,product是个对象,没法直接查询。
注! 这里是两个下划线 product__name