• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    django admin实现动态多选框表单的示例代码

    背景

    借助django-admin,可以快速得到CRUD界面,但若需要创建多选标签字段时,需要对表单进行调整

    示例

    model.py

    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发现并使用,所以主要步骤在此,有以下注意点:

    # 标签查询
    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表单样式

    以上就是django admin实现动态多选框表单的示例代码的详细内容,更多关于django admin多选框表单的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • django-xadmin根据当前登录用户动态设置表单字段默认值方式
    • 在django admin详情表单显示中添加自定义控件的实现
    • 自定义django admin model表单提交的例子
    • Django admin.py 在修改/添加表单界面显示额外字段的方法
    上一篇:聊聊python中not 与 is None的区别
    下一篇:基于Python3中运算符 **和*的区别说明
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    django admin实现动态多选框表单的示例代码 django,admin,实现,动态,多选,