加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 允许在Django ChoiceField中进行动态选择

发布时间:2020-12-20 13:48:25 所属栏目:Python 来源:网络整理
导读:我在我的应用程序中使用 Select2来创建类似标记的选择下拉列表.用户可以选择预定义标签的数量或创建新标签. 相关表格类部分: all_tags = Tag.objects.values_list('id','word') # Tags tags = forms.ChoiceField( choices=all_tags,widget=forms.Select( at
我在我的应用程序中使用 Select2来创建类似标记的选择下拉列表.用户可以选择预定义标签的数量或创建新标签.

相关表格类部分:

all_tags = Tag.objects.values_list('id','word')

   # Tags
    tags = forms.ChoiceField(
        choices=all_tags,widget=forms.Select(
            attrs={
                'class': 'question-tags','multiple': 'multiple',}
        )
    )

问题是Django在验证时不允许自定义标签(选项).有错误我看起来像这样:选择一个有效的选择.香蕉不是可用的选择之一.

它有什么办法吗?

谢谢

解决方法

我会将choicefield更改为charfield,并使用clean方法根据特定条件过滤不需要的选项.简单地使用select小部件将其更改为char字段将起作用,因为Select2仍然是javascript.

class Myform(forms.Form):
    tags = forms.CharField(
    max_length=254,widget=forms.Select(
        choices=tags,# here we set choices as part of the select widget
        attrs={
            'class': 'question-tags',}
        )
    )
    def clean_tags(self):
        tags = self.cleaned_data['tags']
        # more tag cleaning logic here
        return tags

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读