У меня есть простой обработчик Django-Piston, который создает новый экземпляр модели и сохраняет его.
На клиенте я публикую сообщения с использованием объектов Javascript и JQuery.post.
После проверки данных с помощью Firebug строка сообщения выглядит следующим образом:
classification=&organization=&title=Formatting+Test+7&description=test&created_by=created_on=&last_modified=&csrfmiddlewaretoken=a8352bb51f88c271119a81228a5c291f
Как видите, установлены только заголовок, описание и csrfmiddlewaretoken.
Внутри обработчика поршня наВ верхней части метода create перед запуском любого другого кода я распечатываю запрос.POST:
print 'POST:', request.POST
, который выводит следующее в выводе Django Dev Server:
POST: <QueryDict: {u'description': [u'test'], u'classification': [u''], u'title': [u'Formatting Test 7'], u'created_by': [u''], u'created_on': [u''], u'last_modified': [u''], u'organization': [u''], u'csrfmiddlewaretoken': [u'a8352bb51f88c271119a81228a5c291f']}>
Как видите, все данные в списках сейчас.Когда я сохраняю данные с помощью формы Django, он преобразует список в строку, а когда данные отображаются на клиенте, вместо «Форматирование теста 7», он отображает «[Тест форматирования 7 ']».
Похоже, что Google не возвращает никому с такой же проблемой, и я использую Piston уже более 6 месяцев, и я никогда не видел подобной ошибки раньше.
РЕДАКТИРОВАТЬ: Как сказал JPIC, ошибка, которую, как мне показалось, я испытывал, была не ошибкой, а намеренно.Моя проблема заключалась в расширении данных в QuerySet до того, как я использовал их с формой Django.
Неправильный путь:
some_initial_data = {
'created_by': creator.pk,
'organization': org.pk,
'classification': 7
}
post = dict(request.POST)
post.update(some_initial_data)
form = MyModelForm(post)
Правильный путь:
Как описано в методе обновления для QueryDict: https://docs.djangoproject.com/en/1.3/ref/request-response/#querydict-objects
some_initial_data = {
'created_by': creator.pk,
'organization': org.pk,
'classification': 7
}
post = request.POST.copy()
post.update(initial_data)
form = MyModelForm(post)