欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在django admin中配置搜索域是一個(gè)外鍵時(shí)的處理方法

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

python 2.7.11

django 1.8.4

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

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

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

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

[ 說明 ]

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

外鍵不應(yīng)該只是一個(gè)model,而該是另一個(gè)表的明確的一個(gè)字段。

所以我們需要指定特定的字段 "本表外鍵字段__外鍵所在表需查詢字段"。

補(bǔ)充知識(shí):Django的model中使用外鍵,但在頁面上顯示的是xxx_object?

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

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

注:我在測(cè)試環(huán)境中使用的是python2.7,一切操作做完之后,部署到云服務(wù)器上后,就在后臺(tái)管理系統(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中配置搜索域是一個(gè)外鍵時(shí)的處理方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pytorch中permute()函數(shù)用法補(bǔ)充說明(矩陣維度變化過程)

    pytorch中permute()函數(shù)用法補(bǔ)充說明(矩陣維度變化過程)

    這篇文章主要給大家介紹了關(guān)于pytorch中permute()函數(shù)用法補(bǔ)充說明的相關(guān)資料,本文詳細(xì)說明了permute函數(shù)里維度變化的詳細(xì)過程,需要的朋友可以參考下
    2022-04-04
  • 關(guān)于numpy中np.nonzero()函數(shù)用法的詳解

    關(guān)于numpy中np.nonzero()函數(shù)用法的詳解

    下面小編就為大家?guī)硪黄P(guān)于numpy中np.nonzero()函數(shù)用法的詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • PySide6精簡教程(附圖文!)

    PySide6精簡教程(附圖文!)

    PySide6是Qt的Python封裝,是Qt for Python的組成之一,另一部分是Shiboken,下面這篇文章主要給大家介紹了關(guān)于PySide6精簡教程的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 詳解Python中映射類型(字典)操作符的概念和使用

    詳解Python中映射類型(字典)操作符的概念和使用

    這篇文章主要介紹了詳解Python中映射類型(字典)操作符的概念和使用,字典是目前Python中唯一的映射類型,需要的朋友可以參考下
    2015-08-08
  • Python爬蟲scrapy框架Cookie池(微博Cookie池)的使用

    Python爬蟲scrapy框架Cookie池(微博Cookie池)的使用

    這篇文章主要介紹了Python爬蟲scrapy框架Cookie池(微博Cookie池)的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python代碼需要縮進(jìn)嗎

    Python代碼需要縮進(jìn)嗎

    在本篇文章里小編給大家整理了關(guān)于Python代碼是否需要縮進(jìn)的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-07-07
  • anconda的pip下載包出現(xiàn)的問題解決

    anconda的pip下載包出現(xiàn)的問題解決

    本文主要介紹了anconda的pip下載包出現(xiàn)的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python 如何定義匿名或內(nèi)聯(lián)函數(shù)

    Python 如何定義匿名或內(nèi)聯(lián)函數(shù)

    這篇文章主要介紹了Python 如何定義匿名或內(nèi)聯(lián)函數(shù),文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • 詳解Django中views數(shù)據(jù)查詢使用locals()函數(shù)進(jìn)行優(yōu)化

    詳解Django中views數(shù)據(jù)查詢使用locals()函數(shù)進(jìn)行優(yōu)化

    這篇文章主要介紹了Django中views數(shù)據(jù)查詢使用locals()函數(shù)進(jìn)行優(yōu)化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python基于隨機(jī)采樣一至性實(shí)現(xiàn)擬合橢圓(優(yōu)化版)

    Python基于隨機(jī)采樣一至性實(shí)現(xiàn)擬合橢圓(優(yōu)化版)

    這篇文章主要對(duì)上一版的Python基于隨機(jī)采樣一至性實(shí)現(xiàn)擬合橢圓的優(yōu)化,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以了解一下
    2022-11-11

最新評(píng)論