Как получить список значений из шаблона формы 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
Что происходит в шаблоне :-
I render the title field on the view
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"
}))