Как получить список значений из шаблона формы django в form.py Cleaned_data

Я пытаюсь отправить список значений ['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 шаблон enter image description here

Что происходит в шаблоне :-

  1. I render the title field on the view

  2. I added a JS code on Input box , which gets value a create a hidden input with name blog_tags

что совпадает с именем файла в файле forms.py

После отправки пользователем формы

  • Я успешно получаю оба входных значения title и blog_tags в моем файле views.py и успешно отображаю на консоли с помощью вспомогательной функции get_form_kwargs()

  • Данные выглядят следующим образом

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

Проблема

  • Когда я пытаюсь получить доступ к значению внутри функции clean_blog_tags(), она выводит на консоль только значение списка "happy"
  • .

Помогите, пожалуйста, получить полный список значений в функции clean

Спасибо GS

ChoiceField только для одного варианта, если я помню. Можно ли изменить на MultipleChoiceField и теоретически, это будет работать.

blog_tags = forms.MultipleChoiceField(widget=forms.TextInput(attrs={
    "name":"blog_tags"
}))
Вернуться на верх