91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

在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

彭泽县| 根河市| 南宫市| 东方市| 江西省| 盖州市| 斗六市| 军事| 绿春县| 江门市| 定远县| 安平县| 大化| 辰溪县| 玉田县| 宜宾市| 玉山县| 玉门市| 通河县| 文山县| 蓬莱市| 柞水县| 扬州市| 金塔县| 乌兰县| 新民市| 黄石市| 堆龙德庆县| 台湾省| 安达市| 黔西| 紫云| 林芝县| 扎囊县| 阳东县| 百色市| 滨海县| 太白县| 信宜市| 大同县| 汤阴县|