使用 Bootstrap tagsinput 插件的 Django 表单中的表单错误

Form error in a Django form with Bootstrap tagsinput plugin

我正在使用 Bootstrap/Tagsinput 在 Django 输入表单中添加标签。

问题

第一个字段是我要添加标签的地方,第二个字段是一个简单的文本字段。我可以在第一个字段中添加标签,在第二个字段中添加普通文本。但是,当我提交表单时,输入值被删除并返回到原始表单。 django form.errors 指示第二个字段为空并显示 This field is required 消息,即使我输入了文本!我错过了什么?

form.errors

回来了

<ul class="errorlist"><li>experiments<ul class="errorlist"><li>This field is required.</li></ul></li></ul>

这是相关文件

tags_add.html

我使用的是自定义 html 而不是 django 的 forms.as_table。所有必需的 cssmin.js 已添加到 html 文件中。

<form id="defaultForm" method="post" action="" class="form-horizontal">{% csrf_token %}
        <div class="form-group">
            <label class="col-lg-3 control-label">Tags:</label>
            <div class="col-lg-5">
                <input type="text" name="tags" id="aa" class="form-control" value="" data-role="tagsinput" />
            </div>
        </div>
        <div class="form-group">
            <label class="col-lg-3 control-label">Experiments:</label>
            <div class="col-lg-5">
                <input type="text" name="tags" id="exp_id" class="form-control" value="" />
            </div>
        </div>
        <div class="form-group">
            <div class="col-xs-5 col-xs-offset-3">
                <button type="submit" class="btn btn-default">Submit</button>
            </div>
        </div>
</form>

forms.py

class TagsForm(ModelForm):
    tags = forms.CharField( widget=forms.TextInput(attrs={'size':'20', 'placeholder':'add tags'}), required=True )
    experiments = forms.CharField( widget=forms.TextInput(attrs={'size':'20', 'placeholder':'expid'}), required=True )
    def __init__(self, *args, **kwargs):
        super(TagsForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Tags
        fields = '__all__'

views.py

def view_tags(request,formtype):
    form_type = formtype
    if request.method == "POST":
        form = form_type(request.POST or None)#, extra=extra_additives)
        if form.is_valid():
            instances = form.save(commit=False)
            temp_str= str(instances)
            print temp_str

            experiment_tags = temp_str
            return HttpResponse(experiment_tags)
        else:
            print "from view_tags {0}".format(form.errors)
            return HttpResponse(form.errors)
    else:
        form = TagsForm()
        return render(request, 'tags_add.html', {'form': form})

models.py

class Tags(models.Model):

    tags = models.CharField(max_length=1000)
    experiments = models.CharField(max_length=1000)

    def __str__(self):
        return ':'.join([self.tags, self.experiments])

我通过将以下内容添加到 html 文件中的 scripts 标记使其工作:

    $("input[name='tags']").tagsinput({
       confirmKeys:[13] //-- Only enter                                                                                   
     });