借助django-admin,可以快速得到CRUD界面,但若需要創(chuàng)建多選標(biāo)簽字段時,需要對表單進(jìn)行調(diào)整
model.py
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='書名') tags = models.TextField(null=True, verbose_name='標(biāo)簽')
admin.py
將對應(yīng)的model到admin中注冊,才能被django-admin發(fā)現(xiàn)并使用,所以主要步驟在此,有以下注意點(diǎn):
# 標(biāo)簽查詢 def get_tag_list(): return tag.objects.values_list("name", "name") # 表單類定義 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() # 由于會在數(shù)據(jù)庫中存儲為列表字符串,需在賦值時轉(zhuǎn)回列表對象,才能在修改表單時識別原值 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 # 注冊到admin中 admin.site.register(book, bookAdmin)
寫入到數(shù)據(jù)庫格式
數(shù)據(jù)庫中以列表形式存儲字符串
django表單樣式
以上就是django admin實(shí)現(xiàn)動態(tài)多選框表單的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于django admin多選框表單的資料請關(guān)注腳本之家其它相關(guān)文章!
標(biāo)簽:上海 黔西 益陽 惠州 四川 常德 鷹潭 黑龍江
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《django admin實(shí)現(xiàn)動態(tài)多選框表單的示例代碼》,本文關(guān)鍵詞 django,admin,實(shí)現(xiàn),動態(tài),多選,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。