最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年05月20日 10:05:53   作者:davidsu33  
這篇文章主要介紹了在django admin中配置搜索域是一個外鍵時的處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

python 2.7.11

django 1.8.4

錯誤內(nèi)容:related Field has invalid lookup: icontains

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

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

models.py 文件

# coding:utf8
from django.db import models

class 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: utf8
from django.contrib import admin
from django import forms

from .models import Category

class CategoryAdmin(admin.ModelAdmin):

  search_fileds = ('book__name', 'book__title', 'book__price', 'category') # 設(shè)置搜索欄范圍,如果有外鍵,要注明外鍵的哪個字段,雙下劃線
  list_display = ('book', 'category') # 在頁面上顯示的字段,若不設(shè)置則顯示 models.py 中 __unicode__(self) 中所返回的值
  list_display_links = ('category') # 設(shè)置頁面上哪個字段可單擊進(jìn)入詳細(xì)頁面
  fields = ('category', 'book') # 設(shè)置添加/修改詳細(xì)信息時,哪些字段顯示,在這里 remark 字段將不顯示
  
admin.site.register(Category, CategoryAdmin)

[ 說明 ]

在使用 Django admin 系統(tǒng)中的搜索時可能會出現(xiàn)“related Field has invalid lookup: icontains”錯誤,主要原因是外鍵查詢是需要指定相應(yīng)的字段的。

外鍵不應(yīng)該只是一個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

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

究其緣由,發(fā)現(xiàn)我的云服務(wù)器上用的是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

當(dāng)然,如果使用的版本是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_compatible
class A:
   name=models.CharField(max_length=15)
   def __str__(self):
       return self.name
 
@python_2_unicode_compatible
class B:
   name=models.CharField(max_length=15)
   f=models.ForeignKey(A,on_delete=models.DO_NOTHING)
 
   def __str__(self):
      return self.name

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

相關(guān)文章

  • Python實現(xiàn)圖像去噪方式(中值去噪和均值去噪)

    Python實現(xiàn)圖像去噪方式(中值去噪和均值去噪)

    今天小編就為大家分享一篇Python實現(xiàn)圖像去噪方式(中值去噪和均值去噪),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 使用python將mysql數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換為json數(shù)據(jù)的方法

    使用python將mysql數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換為json數(shù)據(jù)的方法

    這篇文章主要介紹了使用python將mysql數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換為json數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • django restframework使用redis實現(xiàn)token認(rèn)證

    django restframework使用redis實現(xiàn)token認(rèn)證

    本文主要介紹了django restframework使用redis實現(xiàn)token認(rèn)證,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 基于Python的EasyGUI學(xué)習(xí)實踐

    基于Python的EasyGUI學(xué)習(xí)實踐

    這篇文章主要介紹了基于Python的EasyGUI學(xué)習(xí)實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • web.py中調(diào)用文件夾內(nèi)模板的方法

    web.py中調(diào)用文件夾內(nèi)模板的方法

    這篇文章主要介紹了web.py中調(diào)用文件夾內(nèi)模板的方法,竟然如此的簡單,而且好用,需要的朋友可以參考下
    2014-08-08
  • Python中常見的異??偨Y(jié)

    Python中常見的異??偨Y(jié)

    當(dāng) Python 檢測到一個錯誤時,解釋器就會指出當(dāng)前流已經(jīng)無法繼續(xù)執(zhí)行下去,這時候就出現(xiàn)了異常。
    2018-02-02
  • 基于Python編寫PDF轉(zhuǎn)EPUB以及MOBI工具

    基于Python編寫PDF轉(zhuǎn)EPUB以及MOBI工具

    當(dāng)我們需要在電子閱讀器上閱讀這些文檔時,轉(zhuǎn)換為EPUB或MOBI格式會提供更好的閱讀體驗,所以本文將使用Python編寫一個PDF轉(zhuǎn)EPUB以及MOBI工具,需要的可以參考下
    2025-03-03
  • Python構(gòu)建區(qū)塊鏈的方法詳解

    Python構(gòu)建區(qū)塊鏈的方法詳解

    區(qū)塊鏈(Blockchain)是一種分布式賬本(listributed ledger),它是一種僅供增加(append-only),內(nèi)容不可變(immutable)的有序(ordered)鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)由網(wǎng)絡(luò)中的一系列節(jié)點共同維護(hù),并且這些節(jié)點之間互不信任
    2023-02-02
  • Python中 Lambda表達(dá)式全面解析

    Python中 Lambda表達(dá)式全面解析

    Lambda是一種匿名函數(shù),當(dāng)我們需要重復(fù)調(diào)用某一函數(shù),又不想寫那么多代碼時可以使用lambda表達(dá)式來代替。本文給大家介紹Python中 Lambda表達(dá)式,需要的朋友一起學(xué)習(xí)吧
    2016-11-11
  • Python實現(xiàn)敏感詞過濾的4種方法

    Python實現(xiàn)敏感詞過濾的4種方法

    這篇文章主要介紹了Python實現(xiàn)敏感詞過濾的4種方法,幫助大家處理不和諧的言論,感興趣的朋友可以了解下
    2020-09-09

最新評論

永春县| 谢通门县| 湄潭县| 瑞安市| 通渭县| 莎车县| 平泉县| 阿拉善右旗| 上虞市| 舞钢市| 丹巴县| 江川县| 松阳县| 凉城县| 丰台区| 乌苏市| 东乌| 越西县| 资兴市| 霞浦县| 盖州市| 兴海县| 邵武市| 庆阳市| 仙居县| 谢通门县| 万全县| 松滋市| 太原市| 安仁县| 忻城县| 射阳县| 湄潭县| 左贡县| 博客| 周宁县| 汝阳县| 诏安县| 东阳市| 磴口县| 瑞安市|