亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

django-admin如何實現動態多選框表單

發布時間:2022-02-28 15:39:22 來源:億速云 閱讀:317 作者:iii 欄目:開發技術

今天小編給大家分享一下django-admin如何實現動態多選框表單的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

背景

借助django-admin,可以快速得到CRUD界面,但若需要創建多選標簽字段時,需要對表單進行調整

示例

model.py

  • 一個tag(標簽類),一個book(書本類)

  • book攜帶tag,這里不借助有性能問題的外鍵

class tag(models.Model):
    name = models.CharField(max_length=20, verbose_name='標簽')
 
 
class book(models.Model):
    name = models.CharField(max_length=50, verbose_name='書名')
    tags = models.TextField(null=True, verbose_name='標簽')

 admin.py

將對應的model到admin中注冊,才能被django-admin發現并使用,所以主要步驟在此,有以下注意點:

  • values_list返回:<QuerySet [('tag1', 'tag1'), ('tag2', 'tag2')]>

  • 保證最新標簽列表:在表單初始化才執行一次標簽查詢

  • 表單修改顯示標簽:在表單初始化賦值列表對象

# 標簽查詢
def get_tag_list():
    return tag.objects.values_list("name", "name")
 
# 表單類定義
class bookForm(forms.ModelForm):
    tags = forms.MultipleChoiceField(label='標簽', widget=widgets.CheckboxSelectMultiple)
 
    def __init__(self, *args, **kwargs):
        super(cameraForm, self).__init__(*args, **kwargs)
        
        # 保證每次初始化有最新的標簽列表
        self.fields['tags'].choices = get_tag_list()
        
        # 由于會在數據庫中存儲為列表字符串,需在賦值時轉回列表對象,才能在修改表單時識別原值
        self.initial['tags'] = eval(self.initial['tags'])    
 
    class Meta:
        model = book
        exclude = []
 
# book擴展
class bookAdmin(admin.ModelAdmin):
    search_fields = 'name', 'tags')
    list_display = ( 'name', 'tags')
    form = bookForm
 
# 注冊到admin中
admin.site.register(book, bookAdmin)

以上就是“django-admin如何實現動態多選框表單”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

茶陵县| 卢湾区| 湄潭县| 桓台县| 仪陇县| 武汉市| 枞阳县| 贵德县| 广宁县| 逊克县| 柳江县| 玛纳斯县| 基隆市| 普陀区| 伊宁市| 阿巴嘎旗| 盐边县| 乐至县| 石林| 图木舒克市| 秦皇岛市| 永康市| 会昌县| 临武县| 扶沟县| 田阳县| 常山县| 廊坊市| 油尖旺区| 峨眉山市| 铜川市| 西华县| 崇仁县| 涿鹿县| 江门市| 原平市| 陆良县| 牙克石市| 台北县| 锦州市| 彭州市|