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

Django自關(guān)聯(lián)實(shí)現(xiàn)多級(jí)聯(lián)動(dòng)查詢實(shí)例

 更新時(shí)間:2020年05月19日 09:31:44   作者:ersaijun  
這篇文章主要介紹了Django自關(guān)聯(lián)實(shí)現(xiàn)多級(jí)聯(lián)動(dòng)查詢實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

1 問(wèn)題引出

我們?cè)陂_發(fā)網(wǎng)站的時(shí)候可能會(huì)遇到這種情況,多個(gè)字段之間有一定的關(guān)聯(lián)性,比如省市縣,選擇省,之后下一個(gè)選擇框的值則為該省的市集合,選擇市之后下一個(gè)選擇框的值為該市的縣集合。

一種實(shí)現(xiàn)方式是,建立三個(gè)模型表,用外鍵一對(duì)多方式,顯然這樣是不太合理的。Django提供了自關(guān)聯(lián)的實(shí)現(xiàn),模型自身關(guān)聯(lián),即一條數(shù)據(jù)關(guān)聯(lián)另一條數(shù)據(jù)。

本文以省市縣為案例介紹其具體實(shí)現(xiàn)方法。

2 具體實(shí)現(xiàn)

2.1 建立數(shù)據(jù)表Model

在model.py中建立數(shù)據(jù)表

class AdressInfo(models.Model):
  address = models.CharField(max_length = 200, null = True, blank = True, verbose_name = ‘地址')
  pid = models.ForeignKey(‘self' , null = True, blank = True, verbose_name = ‘自關(guān)聯(lián)')

  def __str__(self):
    return self.adress

說(shuō)明:

name :省市縣的名字
pid:外鍵,self自關(guān)聯(lián),這里也可以使用 AdressInfo
null:為True表示可以為空,因?yàn)槭〖?jí)行政單位沒有父級(jí)
blank:為True表示admin后臺(tái)數(shù)據(jù)寫入的時(shí)候可以允許為空

然后遷移數(shù)據(jù)庫(kù)

python manage.py makemigrations
python manage.py migrate

這時(shí)可以在后臺(tái)數(shù)據(jù)表中添加數(shù)據(jù)

2.2 后端url和view函數(shù)

將前端網(wǎng)頁(yè)地址映射為對(duì)應(yīng)函數(shù),用正則表達(dá)式獲取前端傳輸?shù)膒id

url.py 文件

urlpatterns = [
  url(r'^addr/(\d+)$', Address.addrAPI, name = 'Addr)
]

view.py 文件

def addrAPI(request,addr_id): # 接收一個(gè)參數(shù)的id,指model中的pid屬性對(duì)應(yīng)的字段
  if (int(addr_id) == 0): # 為0表示查詢省,省的pid_id為null
    address_data = AddressInfo.objects.filter(pid__isnull = True).values('id','address')
  else: # 查詢市或其他縣
    address_data = AddressInfo.objects.filter(pid_id = int(addr_id)).values('id','address')

  area_list = []
  for a in address_data:
    area_list.append({'id':a['id'], 'address':a['address']})

  return JsonResponse(area_list, safe = False)

2.3 前端template

前端主要是顯示和執(zhí)行操作相應(yīng),具體實(shí)現(xiàn)是通過(guò)下拉框值的改變觸動(dòng)相應(yīng)函數(shù)。這里只寫關(guān)鍵的地方。

address.html 文件

<body>
  <select id = 'pro'>
    <option value=''>請(qǐng)選擇省</option>
  </select>
  <select id = 'city'>
    <option value=''>請(qǐng)選擇市</option>
  </select>
  <select id = 'dis'>
    <option value=''>請(qǐng)選擇縣</option>
  </select>
</body>

<script>
address = function(a, b)
{
  $.get('/addr/'+a, function (dic){
    $.each(dic, function(index, item){
      b.append('<option value="' + item.id + '">' + item.address + '</option>')
    })
  })
}

$(function (){
  // 獲取省市縣元素
  pro = $('#pro')
  city = $('#city')
  dis = $('#dis')

  // 查詢省信息
  address(0, pro)

  // 根據(jù)省查詢市信息
  pro.change(function(){
    city.empty().append('<option value="">請(qǐng)選擇市</option>');
    dis.empty().append('<option value="">請(qǐng)選擇縣</option>');
    adress(this.value, city)
  })
  // 根據(jù)市查詢縣信息
  city.change(function(){
    dis.empty().append('<option value="">請(qǐng)選擇縣</option>');
    adress(this.value, dis)
  })
})
</script>

3 效果

以上這篇Django自關(guān)聯(lián)實(shí)現(xiàn)多級(jí)聯(lián)動(dòng)查詢實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python Xml文件添加字節(jié)屬性的方法

    Python Xml文件添加字節(jié)屬性的方法

    下面小編就為大家分享一篇Python Xml文件添加字節(jié)屬性的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Django Admin實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)的示例代碼(省市區(qū))

    Django Admin實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)的示例代碼(省市區(qū))

    多級(jí)菜單在很多上面都有應(yīng)用,這篇文章主要介紹了Django Admin實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)(省市區(qū)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Python使用matplotlib模塊繪制圖像并設(shè)置標(biāo)題與坐標(biāo)軸等信息示例

    Python使用matplotlib模塊繪制圖像并設(shè)置標(biāo)題與坐標(biāo)軸等信息示例

    這篇文章主要介紹了Python使用matplotlib模塊繪制圖像并設(shè)置標(biāo)題與坐標(biāo)軸等信息,結(jié)合實(shí)例形式分析了Python中matplotlib模塊進(jìn)行坐標(biāo)系圖形繪制的相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Django ORM數(shù)據(jù)庫(kù)操作處理全面指南

    Django ORM數(shù)據(jù)庫(kù)操作處理全面指南

    本文深度探討Django ORM的概念、基礎(chǔ)使用、進(jìn)階操作以及詳細(xì)解析在實(shí)際使用中如何處理數(shù)據(jù)庫(kù)操作,同時(shí),我們還討論了模型深入理解,如何進(jìn)行CRUD操作,并且深化理解到數(shù)據(jù)庫(kù)遷移等高級(jí)主題
    2023-09-09
  • 使用Python實(shí)現(xiàn)解析HTML的方法總結(jié)

    使用Python實(shí)現(xiàn)解析HTML的方法總結(jié)

    HTML(Hypertext Markup Language)是互聯(lián)網(wǎng)世界中的通用語(yǔ)言,用于構(gòu)建網(wǎng)頁(yè),本文主要為大家介紹了如何使用Python解析HTML,包括各種方法和示例代碼,希望對(duì)大家有所幫助
    2023-11-11
  • python如何生成任意n階的三對(duì)角矩陣

    python如何生成任意n階的三對(duì)角矩陣

    這篇文章主要介紹了python如何生成任意n階的三對(duì)角矩陣,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 基于Python實(shí)現(xiàn)子域名收集工具

    基于Python實(shí)現(xiàn)子域名收集工具

    在網(wǎng)絡(luò)安全領(lǐng)域中,發(fā)現(xiàn)和管理攻擊面絕對(duì)是一項(xiàng)必須的任務(wù),而對(duì)域名的尋找和分析是發(fā)現(xiàn)攻擊面的重要步驟,本文將使用Python編寫一個(gè)子域名收集,需要的可以參考下
    2024-02-02
  • Python編寫一個(gè)多線程的12306搶票程序的示例

    Python編寫一個(gè)多線程的12306搶票程序的示例

    對(duì)于很多人來(lái)說(shuō),搶購(gòu)火車票人們成了一個(gè)令人頭疼的問(wèn)題,本文主要介紹了Python編寫一個(gè)多線程的12306搶票程序的示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • python 動(dòng)態(tài)渲染 mysql 配置文件的示例

    python 動(dòng)態(tài)渲染 mysql 配置文件的示例

    這篇文章主要介紹了python 動(dòng)態(tài)渲染 mysql 配置文件的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • 使用Python解析JSON的實(shí)現(xiàn)示例

    使用Python解析JSON的實(shí)現(xiàn)示例

    本文主要介紹了使用Python解析JSON的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評(píng)論

石柱| 临湘市| 边坝县| 沂水县| 丹阳市| 方山县| 余干县| 阿拉善右旗| 吴桥县| 平乐县| 定西市| 布拖县| 涪陵区| 石泉县| 同江市| 曲麻莱县| 永济市| 长垣县| 泌阳县| 汉中市| 都安| 朝阳区| 淮南市| 游戏| 库车县| 姚安县| 界首市| 密云县| 汉源县| 寿阳县| 政和县| 南昌县| 聊城市| 莒南县| 合江县| 玉溪市| 天峨县| 惠来县| 江川县| 镇雄县| 龙山县|