繁体   English   中英

在Django ChoiceField中允许动态选择

[英]Allow dynamic choice in Django ChoiceField

我在应用程序中使用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在验证后将不允许自定义标签(选择) 我收到的错误如下所示: Select a valid choice. banana is not one of the available choices. Select a valid choice. banana is not one of the available choices.

有什么办法解决吗?

谢谢

我将choicefield更改为charfield,并使用clean方法根据某些条件过滤不需要的选择。 由于Select2仍然是javascript,因此只需使用select小部件将其更改为char字段即可。

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',
            'multiple': 'multiple',
            }
        )
    )
    def clean_tags(self):
        tags = self.cleaned_data['tags']
        # more tag cleaning logic here
        return tags

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM