国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

在django admin中配置搜索域是一個外鍵時的處理方法

瀏覽:3日期:2024-10-03 10:31:58

python 2.7.11

django 1.8.4

錯誤內容:related Field has invalid lookup: icontains

我原來默認認為在處理外鍵搜索的時候,django會自動將該外鍵的行數據以str()化之后進行搜索,但其實并不是這樣的,如果將外鍵加入到搜索域中,需要明確寫出來。

這個是我從網上查到的解決方案,測試可用,如下:

models.py 文件

# coding:utf8from django.db import modelsclass 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: utf8from django.contrib import adminfrom django import formsfrom .models import Categoryclass 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的model中使用外鍵,但在頁面上顯示的是xxx_object?

在Django中定義了如下A,B兩個模型:

class A: name=models.CharField(max_length=15) def __unicode__(self): return self.name class B: name=models.CharField(max_length=15) f=models.ForeignKey(A,on_delete=models.DO_NOTHING) def __unicode__(self): return self.name

注:我在測試環境中使用的是python2.7,一切操作做完之后,部署到云服務器上后,就在后臺管理系統中看到B的屬性一欄中f顯示為A_Object,并沒有顯示A的屬性——name的值。

究其緣由,發現我的云服務器上用的是python3.6,在這里要將__unicode__()方法替換成__str__()方法才行.

class A: name=models.CharField(max_length=15) def __str__(self): return self.name class B: name=models.CharField(max_length=15) f=models.ForeignKey(A,on_delete=models.DO_NOTHING) def __str__(self): return self.name

當然,如果使用的版本是python3.x,為了更好地兼容python2.x,可以使用@python_2_unicode_compatible裝飾器來使python2.x想python3.x一樣處理Unicode字符。

from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatibleclass A: name=models.CharField(max_length=15) def __str__(self): return self.name @python_2_unicode_compatibleclass B: name=models.CharField(max_length=15) f=models.ForeignKey(A,on_delete=models.DO_NOTHING) def __str__(self): return self.name

以上這篇在django admin中配置搜索域是一個外鍵時的處理方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
主站蜘蛛池模板: 久久免视频 | 九九在线偷拍视频在线播放 | 亚洲资源在线播放 | 一级特级欧美a毛片免费 | 外国成人网在线观看免费视频 | 久久国产网 | 精品国产免费人成高清 | 一本三道a无线码一区v小说 | 一级做a爰片久久毛片唾 | 久久精品成人国产午夜 | 三级网址在线 | 一级一片免费播放 | 久久999精品 | 97久久草草超级碰碰碰 | 国产在线精品一区二区不卡 | 亚洲国产成人在线视频 | 国产一级做a爰片在线看免费 | 亚洲免费观看网站 | 91亚洲欧美 | 亚洲国产爱久久全部精品 | 男人的天堂免费 | 一级做a爰 | 日韩三级视频在线观看 | 中文字幕无线精品乱码一区 | 国产伦精品一区二区三区免费 | 免费毛片播放 | 欧美一级毛片激情 | 国产成人久久精品二区三区牛 | 久久久日韩精品国产成人 | 性盈盈影院影院67194 | 日韩欧美一区二区中文字幕 | 欧美三级不卡视频 | 亚洲网址在线观看 | 六月丁香婷婷色狠狠久久 | 国产深夜福利视频观看 | freesex日本高清nice | 久久精品免费观看国产软件 | 久久99亚洲精品久久 | 久久视频精品53在线观看 | 成人欧美在线 | 韩国一级特黄毛片大 |