【问题标题】:How do I get List of values from django form template to form.py Cleaned_data如何从 django 表单模板获取值列表到 form.py Cleaned_data
【发布时间】:2021-10-24 23:07:07
【问题描述】:

我实际上是在尝试将值列表 ['good','nice','happy'] 发布到后端。

我的 django 应用中有以下文件。

models.py
class TagModel(models.Model):
name = models.CharField(max_length=255)

class BlogModel(models.Model):
  title = models.CharField(max_length=255)
  tags = models.ManyToManyField(TagModel)

forms.py
class BlogForm(forms.ModelForm):
title = forms.CharField(widget=forms.TextInput(attrs={
    'placeholder':_('Enter Blog Title'),
    'class' : 'form-control border-success'
}))
 blog_tags = forms.ChoiceField(widget=forms.TextInput(attrs={
    "name":"blog_tags"
}))

def clean_title(self):
    title = self.cleaned_data.get('title')
    print(title)
    return title

def clean_blog_tags(self):
    //this line does not get whole list of data
    tags = self.cleaned_data.get('blog_tags')
    print(tags) // problem is here
    return tags

class Meta:
    model = PostModel
    fields = ['title','blog_tags']

views.py
class create_blog(CreateView):
template_name = 'blogbackend/create_blog.html'
form_class=BlogForm

 def get_form_kwargs(self):
    kwargs = super(create_blog,self).get_form_kwargs()
    print(kwargs)
    return kwargs

HTML 模板

模板上发生的事情是:-

  1. 我在视图上渲染标题字段

  2. 我在输入框上添加了一个 JS 代码,它的价值是创建一个名为 blog_tags 的隐藏输入

与forms.py文件中的文件名相同

用户提交表单后

  • 我在 views.py 文件中成功接收到输入值 title 和 blog_tags,并使用辅助函数 get_form_kwargs() 成功显示在控制台上

  • 数据是这样的

     {'initial': {}, 'prefix': None, 'data': <QueryDict: 
     {'csrfmiddlewaretoken':  ['4Cm5mvGFv4skPJNTzRI8fKZKq9i7edQbwNmOgCPbDTtu8JQHqE5cd9rQLA8Kzhpu'],'title': ['first'],'blog_tags' : ['good','nice','happy']}>, 'instance':None}
    

问题

  • 当我尝试访问函数 clean_blog_tags() 中的值时,它只会在控制台上打印列表值“happy”

谁能帮我获取干净函数中的完整值列表

谢谢 GS

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

    如果我记得的话,ChoiceField 只是一个选择。可以更改为MultipleChoiceField,理论上,这是可行的。

    blog_tags = forms.MultipleChoiceField(widget=forms.TextInput(attrs={
        "name":"blog_tags"
    }))
    

    【讨论】:

    • 您好@Eduardo_Oliveira 感谢您的评论,我试过了。但是,这会引发错误,因为当我提交表单时,它会将我重定向回来,现在它甚至运行函数 clean_blog_tags()
    猜你喜欢
    • 2018-09-23
    • 1970-01-01
    • 2010-12-02
    • 2011-11-03
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    相关资源
    最近更新 更多