在Django admin中編輯ManyToManyField的實(shí)現(xiàn)方法
如何定義多對(duì)多關(guān)系
Django 本身自帶了一個(gè)很強(qiáng)大的ORM,支持自定義model并將其映射到數(shù)據(jù)庫的表中
model中可以定義各種類型的數(shù)據(jù),比較直觀的比如整形, 字符型,也可以定義外鍵 ForeignKey來指定一對(duì)多關(guān)系。
關(guān)系數(shù)據(jù)庫中有一種多對(duì)多的關(guān)系,在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是一個(gè)多對(duì)多關(guān)系,這樣在作migrate的時(shí)候就會(huì)在數(shù)據(jù)庫中多產(chǎn)生一個(gè)作Mapping的表,表名一般為emailgroup_email_to
如何編輯多對(duì)多關(guān)系
Django另一個(gè)強(qiáng)大的功能是可以根據(jù)model來生成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界面來編輯ManytoManyField
以上這篇在Django admin中編輯ManyToManyField的實(shí)現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
pycharm出現(xiàn)了pytest模式下如何改回run模式
這篇文章主要介紹了pycharm出現(xiàn)了pytest模式下如何改回run模式問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
人工智能學(xué)習(xí)Pytorch張量數(shù)據(jù)類型示例詳解
這篇文章主要為大家介紹了人工智能學(xué)習(xí)Pytorch張量數(shù)據(jù)類型的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11
使用Django和Python創(chuàng)建Json response的方法
下面小編就為大家分享一篇使用Django和Python創(chuàng)建Json response的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03
使用Python模塊進(jìn)行數(shù)據(jù)處理的詳細(xì)步驟
Python 提供了豐富的模塊和庫,用于處理各種類型的數(shù)據(jù),本文介紹了一些常用的模塊和庫,以及如何使用它們進(jìn)行數(shù)據(jù)處理的詳細(xì)步驟和代碼示例,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2025-02-02
python內(nèi)置模塊collections知識(shí)點(diǎn)總結(jié)
這篇文章主要介紹了python內(nèi)置模塊collections知識(shí)點(diǎn)總結(jié),有興趣的朋友們學(xué)習(xí)下。2019-12-12
解決Python中l(wèi)ist里的中文輸出到html模板里的問題
今天小編就為大家分享一篇解決Python中l(wèi)ist里的中文輸出到html模板里的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12

