django admin模块使用出现Related Field has invalid lookup: icontains的错误

http://blog.csdn.net/orangleliu/article/details/8943907


首先看下log
  1. TypeError at /admin/order/order/  
  2.   
  3. Related Field has invalid lookup: icontains  
  4.   
  5. Request Method:     GET  
  6. Request URL:    http://localhost:8888/admin/order/order/?q=11  
  7. Django Version:     1.4.5  
  8. Exception Type:     TypeError  
  9. Exception Value:      
  10.   
  11. Related Field has invalid lookup: icontains  
  12.   
  13. 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  
  14. Python Executable:  /home/lzz/Virtualenv/blog1_django_1.4/env/bin/python  
  15. Python Version:     2.7.3  
  16. Python Path:      
  17.   
  18. ['/home/lzz/Virtualenv/blog1_django_1.4/eshop',  
  19.  '/home/lzz/Virtualenv/blog1_django_1.4/env/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',  
  20.  '/home/lzz/Virtualenv/blog1_django_1.4/env/local/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg',  
  21.  '/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',  
  22.  '/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg',  
  23.  '/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7',  
  24.  '/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/plat-linux2',  
  25.  '/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/lib-tk',  
  26.  '/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/lib-old',  
  27.  '/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/lib-dynload',  
  28.  '/usr/lib/python2.7',  
  29.  '/usr/lib/python2.7/plat-linux2',  
  30.  '/usr/lib/python2.7/lib-tk',  
  31.  '/home/lzz/Virtualenv/blog1_django_1.4/env/local/lib/python2.7/site-packages',  
  32.  '/home/lzz/Virtualenv/blog1_django_1.4/env/lib/python2.7/site-packages']  
  33.   
  34. Server time:    星期三, 15 五月 2013 08:10:00 +0800  

这是在两个实体table中,外键引用以后,admin模块添加search框出现的问题,来看看情况 

 

models.py中

  1. class Product(models.Model):  
  2.     name = models.CharField('product name', max_length=30)  
  3. Order(models.Model):  
  4.     product = models.ForeignKey("Product"#外键引用产品类  
 

admin.py中

  1. class OrderAdmin(admin.ModelAdmin):  
  2.     search_fields = ('product',)  #问题就是出在这里  

在admin中我们

 

 

就出现上面的错误了!

 

解决办法

admin.py的代码修改一下

  1. class OrderAdmin(admin.ModelAdmin):  
  2.     search_fields = ('product__name',)  #问题就是出在这里  
作为外键django默认是把id和order类关联,这里不能直接写product , 而是product的一个具体字段,product是个对象,没法直接查询。

 

注! 这里是两个下划线 product__name


分享到: 微信 更多