亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

Django自關聯實現多級聯動查詢實例

瀏覽:4日期:2024-10-05 09:44:19

1 問題引出

我們在開發網站的時候可能會遇到這種情況,多個字段之間有一定的關聯性,比如省市縣,選擇省,之后下一個選擇框的值則為該省的市集合,選擇市之后下一個選擇框的值為該市的縣集合。

一種實現方式是,建立三個模型表,用外鍵一對多方式,顯然這樣是不太合理的。Django提供了自關聯的實現,模型自身關聯,即一條數據關聯另一條數據。

本文以省市縣為案例介紹其具體實現方法。

2 具體實現

2.1 建立數據表Model

在model.py中建立數據表

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 = ‘自關聯’) def __str__(self): return self.adress

說明:

name :省市縣的名字pid:外鍵,self自關聯,這里也可以使用 AdressInfonull:為True表示可以為空,因為省級行政單位沒有父級blank:為True表示admin后臺數據寫入的時候可以允許為空

然后遷移數據庫

python manage.py makemigrationspython manage.py migrate

這時可以在后臺數據表中添加數據

2.2 后端url和view函數

將前端網頁地址映射為對應函數,用正則表達式獲取前端傳輸的pid

url.py 文件

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

view.py 文件

def addrAPI(request,addr_id): # 接收一個參數的id,指model中的pid屬性對應的字段 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

前端主要是顯示和執行操作相應,具體實現是通過下拉框值的改變觸動相應函數。這里只寫關鍵的地方。

address.html 文件

<body> <select id = ’pro’> <option value=’’>請選擇省</option> </select> <select id = ’city’> <option value=’’>請選擇市</option> </select> <select id = ’dis’> <option value=’’>請選擇縣</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) // 根據省查詢市信息 pro.change(function(){ city.empty().append(’<option value=''>請選擇市</option>’); dis.empty().append(’<option value=''>請選擇縣</option>’); adress(this.value, city) }) // 根據市查詢縣信息 city.change(function(){ dis.empty().append(’<option value=''>請選擇縣</option>’); adress(this.value, dis) })})</script>

3 效果

Django自關聯實現多級聯動查詢實例

Django自關聯實現多級聯動查詢實例

以上這篇Django自關聯實現多級聯動查詢實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
主站蜘蛛池模板: 亚洲国产一区二区三区最新 | 青青草视频破解版 | 在线看的网站 | 成人福利在线免费观看 | 可以免费观看的一级毛片 | 青青草视频破解版 | 午夜视频色 | 免费看的成人yellow视频 | 欧美一区二区三 | 成人免费视频无遮挡在线看 | 国产日韩精品视频 | 国产精品一区二区不卡的视频 | 玖草影视 | 欧美成人久久一级c片免费 欧美成人午夜不卡在线视频 | 亚洲国产成人久久一区二区三区 | 92精品国产自产在线观看48页 | 免费在线观看黄色的网站 | 免费一级毛片清高播放 | 久久综合性 | 妞干网在线免费视频 | 91亚洲综合| 日韩在线aⅴ免费视频 | 中文字幕在线影院 | 久久ww精品w免费人成 | 特级淫片日本高清视频 | 粉嫩极品国产在线播放 | 久久免费精品一区二区 | 国产成人免费午夜性视频 | 欧美一级特黄特黄毛片 | 免费观看性欧美一级 | 欧美国产三级 | 国产酒店视频 | 亚洲一区精品在线 | 日韩爱爱网| 国产一区二区在线视频观看 | a级高清观看视频在线看 | 最新国产三级久久 | 三级毛片免费看 | a一级毛片 | 国产成人香蕉久久久久 | 日本一级毛片中文字幕 |