django admin實(shí)現(xiàn)動(dòng)態(tài)多選框表單的示例代碼
背景

借助django-admin,可以快速得到CRUD界面,但若需要?jiǎng)?chuàng)建多選標(biāo)簽字段時(shí),需要對(duì)表單進(jìn)行調(diào)整
示例
model.py
- 一個(gè)tag(標(biāo)簽類(lèi)),一個(gè)book(書(shū)本類(lèi))
- book攜帶tag,這里不借助有性能問(wèn)題的外鍵
class tag(models.Model): name = models.CharField(max_length=20, verbose_name='標(biāo)簽') class book(models.Model): name = models.CharField(max_length=50, verbose_name='書(shū)名') tags = models.TextField(null=True, verbose_name='標(biāo)簽')
admin.py
將對(duì)應(yīng)的model到admin中注冊(cè),才能被django-admin發(fā)現(xiàn)并使用,所以主要步驟在此,有以下注意點(diǎn):
- values_list返回:<QuerySet [('tag1', 'tag1'), ('tag2', 'tag2')]>
- 保證最新標(biāo)簽列表:在表單初始化才執(zhí)行一次標(biāo)簽查詢
- 表單修改顯示標(biāo)簽:在表單初始化賦值列表對(duì)象
# 標(biāo)簽查詢
def get_tag_list():
return tag.objects.values_list("name", "name")
# 表單類(lèi)定義
class bookForm(forms.ModelForm):
tags = forms.MultipleChoiceField(label='標(biāo)簽', widget=widgets.CheckboxSelectMultiple)
def __init__(self, *args, **kwargs):
super(cameraForm, self).__init__(*args, **kwargs)
# 保證每次初始化有最新的標(biāo)簽列表
self.fields['tags'].choices = get_tag_list()
# 由于會(huì)在數(shù)據(jù)庫(kù)中存儲(chǔ)為列表字符串,需在賦值時(shí)轉(zhuǎn)回列表對(duì)象,才能在修改表單時(shí)識(shí)別原值
self.initial['tags'] = eval(self.initial['tags'])
class Meta:
model = book
exclude = []
# book擴(kuò)展
class bookAdmin(admin.ModelAdmin):
search_fields = 'name', 'tags')
list_display = ( 'name', 'tags')
form = bookForm
# 注冊(cè)到admin中
admin.site.register(book, bookAdmin)
處理結(jié)果
寫(xiě)入到數(shù)據(jù)庫(kù)格式
數(shù)據(jù)庫(kù)中以列表形式存儲(chǔ)字符串

django表單樣式

以上就是django admin實(shí)現(xiàn)動(dòng)態(tài)多選框表單的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于django admin多選框表單的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在Django的URLconf中使用多個(gè)視圖前綴的方法
這篇文章主要介紹了在Django的URLconf中使用多個(gè)視圖前綴的方法,Django是Python中最為著名的遵循MVC結(jié)構(gòu)的開(kāi)發(fā)框架,需要的朋友可以參考下2015-07-07
python人工智能tensorflow構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(luò)RNN
這篇文章主要為大家介紹了python人工智能tensorflow構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(luò)RNN,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
python中import和from-import的區(qū)別解析
這篇文章主要介紹了python中import和from-import的區(qū)別解析,本文通過(guò)實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12
python數(shù)據(jù)解析BeautifulSoup爬取三國(guó)演義章節(jié)示例
這篇文章主要介紹了python數(shù)據(jù)解析BeautifulSoup爬取三國(guó)演義章節(jié)示例,文中附含詳細(xì)示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
python學(xué)習(xí)之subprocess模塊詳解
這篇文章主要介紹了python學(xué)習(xí)之subprocess模塊的相關(guān)資料,該模塊用于創(chuàng)建子進(jìn)程并與其進(jìn)行交互,它提供了多個(gè)函數(shù)和類(lèi)來(lái)執(zhí)行操作系統(tǒng)命令、獲取命令輸出以及管理子進(jìn)程的生命周期,需要的朋友可以參考下2024-12-12
keras 模型參數(shù),模型保存,中間結(jié)果輸出操作
這篇文章主要介紹了keras 模型參數(shù),模型保存,中間結(jié)果輸出操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
python使用百度或高德地圖獲取地理位置并轉(zhuǎn)換
用python處理地理位置是非常常見(jiàn)的需求,下面這篇文章主要給大家介紹了關(guān)于python使用百度或高德地圖獲取地理位置并轉(zhuǎn)換的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07

