В основном у меня есть модель с полем ManyToMany, а затем форма модели, полученная из этой модели, где это поле отображается как поле выбора «множественный выбор». В моем шаблоне у меня пропущено это поле, вместо этого я предпочел подготовить значения для этого поля в представлении, затем передать эти подготовленные значения в request.POST (на самом деле это копия request.POST, потому что request.POST является неизменяемым), затем запрос на подачу. Отправьте в форму, а затем продолжить как обычно. Я не могу понять, как это сделать, потому что request.POST - это не просто словарь Python, а QueryDict, который ведет себя немного по-другому.
Поле, которое мне нужно заполнить, называется "not_bases"
. Когда я создаю виджет с помощью формы, он прекрасно работает внутри, но не в моем вкусе. Когда я проверяю значение POST, отправленное django-формой через удобное окно отладочной ошибки django, рабочий QueryDict выглядит так:
<QueryDict: {u'not_bases': [u'005', u'00AR', u'00F', u'00FD'], [...] }>
Кажется, значение для "not_bases"
- это список, но это не просто список. Я не могу просто .append () к нему, потому что он не будет работать. Я покопался в документации и нашел .update (), который выглядит как , но не работает. Вот мой код:
newPOST = request.POST.copy()
for base in bases:
newPOST.update({"not_bases": base.identifier})
и вот вывод:
<QueryDict: {u'not_bases': [u'KMER', u'KYIP'], u'reference': [u''], [...] }>
Но когда я передаю этот QueryDict в форму, я получаю ошибку проверки формы, которая говорит: «not_bases: введите список значений». Очевидно, что выглядящие списками объекты, представленные в str () представления QueryDict, не одинаковы в двух приведенных выше случаях, даже если они выглядят совершенно одинаково
Так как мне это сделать?