在Django admin中編輯ManyToManyField的實(shí)現(xiàn)方法
如何定義多對(duì)多關(guān)系
Django 本身自帶了一個(gè)很強(qiáng)大的ORM,支持自定義model并將其映射到數(shù)據(jù)庫(kù)的表中
model中可以定義各種類型的數(shù)據(jù),比較直觀的比如整形, 字符型,也可以定義外鍵 ForeignKey來(lái)指定一對(duì)多關(guān)系。
關(guān)系數(shù)據(jù)庫(kù)中有一種多對(duì)多的關(guān)系,在Django的ORM中也支持它,使用ManyToManyField.
下面使用EmailGroup和Email來(lái)展示如何使用
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是一個(gè)多對(duì)多關(guān)系,這樣在作migrate的時(shí)候就會(huì)在數(shù)據(jù)庫(kù)中多產(chǎn)生一個(gè)作Mapping的表,表名一般為emailgroup_email_to
如何編輯多對(duì)多關(guān)系
Django另一個(gè)強(qiáng)大的功能是可以根據(jù)model來(lái)生成admin site,并且可以對(duì)admin site進(jìn)行定制。但是默認(rèn)的admin site 對(duì)這種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',)
這里的重點(diǎn)是使用filter_horizontal
然后將EmailGroupAdmin加入到admin.site中去
admin.site.register(EmialGourp, EmailGroupAdmin)
這樣就會(huì)有一個(gè)非常有好的Admin界面來(lái)編輯ManytoManyField
以上這篇在Django admin中編輯ManyToManyField的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 字典與字符串的互轉(zhuǎn)實(shí)例
下面小編就為大家?guī)?lái)一篇Python 字典與字符串的互轉(zhuǎn)實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-01-01Python?flask?框架使用flask-login?模塊的詳細(xì)過程
Flask-Login?是一個(gè)?Flask?模塊,可以為?Flask?應(yīng)用程序提供用戶登錄功能,這篇文章主要介紹了Python?flask?框架使用?flask-login?模塊,需要的朋友可以參考下2023-01-01基于python的itchat庫(kù)實(shí)現(xiàn)微信聊天機(jī)器人(推薦)
這篇文章主要介紹了基于python的itchat庫(kù)實(shí)現(xiàn)微信聊天機(jī)器人,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10python SVM 線性分類模型的實(shí)現(xiàn)
這篇文章主要介紹了python SVM 線性分類模型的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07python數(shù)組過濾實(shí)現(xiàn)方法
這篇文章主要介紹了python數(shù)組過濾實(shí)現(xiàn)方法,涉及Python針對(duì)數(shù)組的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07