2013-08-28 5 views
1

В приложении django я получаю пользовательские данные формы, которые я пытаюсь вставить в mysql db, но даже если идентификаторы request.keys с именами столбцов db не вставлены в dbВ db данные не вставляются из django

if request: 
    user=User() 
    for k,v in request.POST.items(): 
     if str(k)!="csrfmiddlewaretoken": 
      if(k=='name'): 
       user.name=v  #like this data will be saved 

      user.save() 



if request: 
    user=User() 
    for k,v in request.POST.items(): 
     if str(k)!="csrfmiddlewaretoken": 
       user.k=v  #like this data will not be saved 

      user.save() 

На самом деле я использовал одинаковое имя столбца db и имя тега формы html, поэтому request.POST.keys() совпадает с именем столбца db, но если я столкнулся с ним, он работает, но напрямую, если я повторяю request.post.keys и сохранить его не работает

+0

Я думаю, что вы вообще не называли объект User. Попробуйте следующее: user = User.objects.all() вместо user = User() –

+0

@ Romans8.38-39 User.objects.all() возвращает, если какие-либо данные/объекты хранятся в пользовательской модели .. На самом деле моя проблема даже post.keys совпадает с db col name его не сэкономить – user2210579

+0

Ваш код очень небезопасен. Не делай этого. Используйте Django формы modelforms для проверки пользовательских данных. –

ответ

0

Это не сработает, потому что user.k подразумевает, что вы пытаетесь присвоить значение v t o атрибут k экземпляра User, которого не существует.

Для этой цели вы можете использовать setattr(), если вы склонны делать это таким образом.

for k,v in request.POST.items(): 
    if str(k)!="csrfmiddlewaretoken": 
     setattr(user, k, v) 
    user.save() 
+0

Я благодарен за его работу, но все равно не понимаю, какая разница, если вы видите в django tutorial part1, они назначили polls.id = 1 так же, как я устанавливаю атрибуты пользователя ... Пользовательский объект по умолчанию будет иметь весь столбец как атрибуты справа – user2210579

+0

'k' в вашем случае является переменной, поэтому причина не работает. В вашем случае предполагается, что 'k' - это столбец (атрибут модели) - точно так же, как' id' в примере учебника. Например, если 'k' является' first_name', вы предполагаете, что 'user.k' оценивает' user.first_name', но это не так. – karthikr

+0

, если k = 'firstname', тогда user.k = 'dar' не будет установлен, но будет установлено user.firstname = 'dar', поэтому user.k! = User.firstname, то что именно пользователь.k будет – user2210579

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