2013-08-28 2 views
1

django 앱에서 사용자가 mysql db에 삽입하려고하는 양식 데이터를 보내고 있지만 request.keys가 db 열과 일치합니다. db 값은 db에 삽입되지 않습니다.db 데이터가 django에서 삽입되지 않습니다

request.POST.keys()는 DB 컬럼 이름과 일치하도록
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에서 반복 직접 있다면 작동하지 않는 것을 저장하십시오.

+0

나는 User 객체를 전혀 호출하지 않았다고 생각합니다. 다음과 같이하십시오 : user = User.objects.all() user = User() –

+0

@ Romans8.38-39 User.objects.all()은 사용자 모델에 저장된 데이터/개체가 있으면 반환합니다. 사실 내 문제는 post.keys는 db col name과 일치합니다. 저장하지 않습니다. – user2210579

+0

코드가 매우 안전하지 않습니다. 그러지 마. Django 형식의 모델 형식을 사용하여 사용자 데이터의 유효성을 검사합니다. –

답변

0

user.k은 값 v을 할당하려고 시도 했으므로 작동하지 않습니다. o User 인스턴스의 k 속성이 존재하지 않습니다.

이런 식으로하는 경우이 목적을 위해 setattr()을 사용할 수 있습니다.

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

나중에 덕분에 그 일 했어하지만 여전히 당신이 django 자습서 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이면 정확히 user.k는 – user2210579

관련 문제