91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

渝北区| 湖北省| 大悟县| 子长县| 监利县| 威海市| 富蕴县| 南陵县| 东乌| 桐庐县| 察雅县| 盐山县| 凤冈县| 二连浩特市| 金堂县| 和田市| 灵石县| 清涧县| 花莲县| 桓仁| 收藏| 乳源| 巴中市| 武冈市| 阿拉善左旗| 海兴县| 富蕴县| 汝城县| 乾安县| 靖边县| 长汀县| 绥化市| 临桂县| 景谷| 崇仁县| 思茅市| 平湖市| 兴安县| 哈巴河县| 金华市| 定兴县|