Ошибка JsonResponse при получении списка пользователей на Createview - Django
Я пытаюсь получить всех пользователей, у которых есть группа 'decoration' в поле формы. Я использую JsonResponse для получения списка в реальном времени, когда пользователь начинает вводить текст.
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
fields = ['...']
def get_form(self, form_class=None):
form = super().get_form(form_class)
if 'term' in self.request.GET:
qs = User.objects.filter(groups__name='decoration', username__icontains=self.request.GET.get('term'))
titles = list()
for product in qs:
titles.append(product.username)
form.fields['culture'] = titles
return JsonResponse(form, safe=False)
return form
Если я сделаю печать этого, код работает, выводит мне правильного пользователя, но я получаю следующую ошибку "TypeError: Object of type PostForm is not JSON serializable'.
Титры на самом деле являются списком, я не смог понять, почему выдает эту ошибку.
Я не думаю, что проблема заключается в невозможности передать JsonResponse в CreateView. Проблема заключается в строке return JsonResponse(form, safe=False). Ошибка возникает именно в ней, а не в list(). Попробуйте print(form) и вы поймете, в чем дело. Строка form - это HTML, со всеми тегами и т.д... в HTML-форме. Поэтому он не сериализуется в JSON, да и не имеет смысла. Вы можете попробовать передать поля формы в JsonResponse:
return JsonResponse({'form': form.cleaned_data}, safe=False)