2010-06-19 1 views
0

Используя django trunk r13359 и поршень django, я создал небольшую резервную службу, в которой хранятся строковые значения.необычное поведение администратора django при сохранении строковых значений

Это модель я использую для хранения строк:

class DataStore(models.Model): 
    data = models.CharField(max_length=200) 
    url = models.URLField(default = '', verify_exists=False, blank = True) 

я использовал локон размещать следующие данные:

curl -d "data=somedata" http://localhost:8000/api/datastorage/ 

Это код, который обрабатывает хранения как часть django- поршневой манипулятор

store = DataStore() 
store.url = request.POST.get('url',""), 
store.data = request.POST['data'], 
store.save() 
return {'data':store} 

Когда я отправляю данные с помощью curl, я получаю следующее тело ответа, которое ожидается изд:

{ 
    "result": { 
     "url": [ 
      "" 
     ], 
     "data": [ 
      "somedata" 
     ], 
     "id": 1 
    } 
} 

Что не ожидается, однако, когда я смотрю на хранящемся, например, от Джанго администратора, значение, хранящееся в поле данных выглядит следующим образом:

(u'somedata',) 

и нижеследующее хранится в URL-адрес:

('',) 

что еще более интересно, когда я запрос на обслуживание с завитком, чтобы увидеть, что хранится, я получаю следующее:

{ 
    "result": { 
     "url": [ 
      "('',)" 
     ], 
     "data": [ 
      "(u'somedata',)" 
     ], 
     "id": 1 
    } 
} 

Я в тупике .. любые идеи, что может быть?

ответ

1

На самом деле ваш ответ также не то, что следует ожидать, обратите внимание на [] вокруг ваших строк, их не должно быть.

Ваша ошибка добавляет запятую после этих двух линий:

store.url = request.POST.get('url',""), 
store.data = request.POST['data'], 

Python будет интерпретируют вы хотите сохранить кортеж в URL и данных, и Джанго преобразует эти кортежи в строки неявно, в результате чего поведение ты видишь. Просто удалите две запятые, и все будет в порядке.

+0

omg! спасибо Я предполагаю, что у вас получится, когда вы начнете работать с json и python: D –

 Смежные вопросы

  • Нет связанных вопросов^_^