django admin模块使用出现Related Field has invalid lookup: icontains的错误
http://blog.csdn.net/orangleliu/article/details/8943907
首先看下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