中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在Django admin中編輯ManyToManyField的實現方法

發布時間:2020-09-23 05:40:12 來源:腳本之家 閱讀:260 作者:阿農安貴人 欄目:開發技術

如何定義多對多關系

Django 本身自帶了一個很強大的ORM,支持自定義model并將其映射到數據庫的表中

model中可以定義各種類型的數據,比較直觀的比如整形, 字符型,也可以定義外鍵 ForeignKey來指定一對多關系。

關系數據庫中有一種多對多的關系,在Django的ORM中也支持它,使用ManyToManyField.

下面使用EmailGroup和Email來展示如何使用

class EmailTo(models.Model):
  name = models.CharField(max_length=64)
  email = models.EmailField(max_length=255, unique=True, db_index=True)

  def __unicode__(self):
    return self.name

class EmailGourp(models.Model):
  name = models.CharField(max_length=64)
  email_to = models.ManyToManyField(EmialTo, blank=True)

  def __unicode__(self):
    return self.name

這里就定義了EmailGroup和EmailTo是一個多對多關系,這樣在作migrate的時候就會在數據庫中多產生一個作Mapping的表,表名一般為emailgroup_email_to

如何編輯多對多關系

Django另一個強大的功能是可以根據model來生成admin site,并且可以對admin site進行定制。但是默認的admin site 對這種ManytoManyField的編輯功能非常的弱小而且還有問題。

就是如果只有這樣的話

admin.site.register(EmialGourp)

那如何才能使admin site很好的支持編輯ManytoManyField呢,這樣就需要定制化admin site

首先定義EmailGroup的admin

class EmailGroupAdmin(ModelAdmin):
  list_display = ('name',)
  fieldsets = (
    (None, {'fields': ('name', 'email_to')}),
  )
  filter_horizontal = ('email_to',)

這里的重點是使用filter_horizontal

然后將EmailGroupAdmin加入到admin.site中去

admin.site.register(EmialGourp, EmailGroupAdmin)

這樣就會有一個非常有好的Admin界面來編輯ManytoManyField

以上這篇在Django admin中編輯ManyToManyField的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

财经| 东乌| 南溪县| 和龙市| 万载县| 阜新市| 石楼县| 纳雍县| 淅川县| 涞水县| 成武县| 印江| 泉州市| 西安市| 河曲县| 安阳市| 师宗县| 当涂县| 郸城县| 德格县| 青海省| 南投市| 通道| 肥乡县| 哈尔滨市| 霍邱县| 沧州市| 乌拉特后旗| 平阴县| 永新县| 鹰潭市| 都安| 宣恩县| 二连浩特市| 容城县| 岑溪市| 五台县| 蓝山县| 车致| 临海市| 纳雍县|