国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

django admin 后臺實現三級聯動的示例代碼

2020-02-15 21:57:50
字體:
來源:轉載
供稿:網友

在剛進公司的時候,要寫一個需求,使用django的admin站點管理,實現一個二級聯動的功能,因為要用到django自帶的頁面,因為不是自定義的,不能直接添加js代碼。根據我自己的研究簡單的記錄一下大概步驟。

項目創建流程略過,這里使用MySQL數據庫和py3為例。

示例項目大概功能,添加一個人物信息,地區通過三級聯動選擇。

一、項目創建成功后,首先寫模型類代碼:

class AreaInfo(models.Model):  """地區模型類"""  name = models.CharField(max_length = 50)  pid = models.ForeignKey('self', related_name = 'areas',null=True, blank=True, on_delete = models.SET_NULL)    def __str__(self):    return self.name      class Meta:    db_table = 'areainfo'        verbose_name = '地區信息'    verbose_name_plural = verbose_name    class HeroInfo(models.Model):  """任務信息模型類"""    name = models.CharField(max_length = 50)  # on_delete 表示關聯的外鍵表刪除數據時,該條數據不變,外鍵置為空  province = models.ForeignKey(AreaInfo, null=True, blank=True, on_delete = models.SET_NULL)  city = models.ForeignKey(AreaInfo, related_name = 'areainfo', null=True, blank=True, on_delete = models.SET_NULL)  country = models.ForeignKey(AreaInfo, related_name = 'areainfos', null=True, blank=True, on_delete = models.SET_NULL)    def __str__(self):    return self.name    class Meta:    db_table = 'heroinfo'        verbose_name = '人物信息'    verbose_name_plural = verbose_name

在一個模型類中,兩個外鍵關聯同一個模型類,要使用related_name進行設置,否則會報錯。related_name 不能相同,否則遷移數據庫會出錯,反向查詢名稱重復。

然后進行數據庫遷移,在數據庫中導入地區信息,為后續使用做準備。

使用數據庫時,不要忘記在settings.py中修改數據庫配置。同時使用時,要在應用的__init__.py文件中,添加以下兩行代碼:

import pymysqlpymysql.install_as_MySQLdb

因為在MySQLdb是python連接MySQL的模塊,在py2中使用,py3中沒有MySQLdb,所以py3要安裝pymysql,并進行以上設置。

二、以上步驟完成之后進行第二部,注冊模型類

@admin.register(AreaInfo)class AreaAdmin(admin.ModelAdmin):    list_display = ('name', 'pid') # 這里要使用元組或者列表@admin.register(HeroInfo)class HeroAdmin(admin.ModelAdmin):    list_display = ('name', 'province', 'city', 'country')  change_form_template = 'area.html'

在這里用到了change_form_template,可以自定義訪問路徑,改變django默認的路徑

三、在template中新建一個文件admin,在admin中新建一個area.html頁面,將django 中的 change_form.html內容拷貝過來。

后面寫三級聯動的js要在這里,改變django默認的路徑,讀取的也是該頁面,上面在admin中已經進行了設置。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大石桥市| 龙海市| 许昌市| 白银市| 天镇县| 沁源县| 富宁县| 潢川县| 肥乡县| 淄博市| 海南省| 六枝特区| 图们市| 贵港市| 大邑县| 汤原县| 晋城| 巴塘县| 临安市| 长沙市| 顺平县| 甘谷县| 花莲县| 冷水江市| 车险| 邵阳市| 湘潭县| 舟山市| 洛扎县| 太仆寺旗| 华安县| 平泉县| 循化| 兴化市| 澳门| 乐平市| 博爱县| 洛南县| 巢湖市| 类乌齐县| 淳安县|