2010-05-16 6 views
5

'마이크로 블로그'최소 응용 프로그램에서 100 자 양식 사용자를 저장하려고합니다. 내 코드에 이상한 점이없는 것 같지만 작동하지 않습니다. 실수는 views.py에 있습니다. 사용자 테이블에 외래 키를 저장할 수 없습니다.양식 내용을 데이터베이스에 저장할 수 없습니다.

models.py은 다음과 같습니다 : 여기 수입을 언급하지 않았다

class NewManager(models.Manager): 

    def create_post(self, post, username): 
new = self.model(post=post, created_by=username) 
     new.save() 
     return new 

class New(models.Model): 

    post = models.CharField(max_length=120) 
    date = models.DateTimeField(auto_now_add=True) 
    created_by = models.ForeignKey(User, blank=True) 
    objects = NewManager() 


class NewForm(ModelForm): 

    class Meta: 
      model = New 
      fields = ['post'] 
     # widgets = {'post': Textarea(attrs={'cols': 80, 'rows': 20}) 

def save_new(request): 

    if request.method == 'POST': 
     created_by = User.objects.get(created_by = user) 
     date = request.POST.get('date', '') 
     post = request.POST.get('post', '') 
     new_obj = New(post=post, date=date, created_by=created_by) 
     new_obj.save() 
     return HttpResponseRedirect('/') 
    else: 
      form = NewForm()  
    return render_to_response('news/new_form.html', {'form': form},context_instance=RequestContext(request)) 

- 그들은 어쨌든, 바로 완료됩니다. 내 실수는 views.py에 있습니다. 내가 저장하려고하면 그것은 말한다 : 나는 매개 변수로 created_py을 넣으면 할당

전에 참조

지역 변수 'CREATED_BY이 (가) 작성한'는, 저장이 이상의 매개 변수를 필요로한다. 정말 이상합니다.

+0

코드를 4 칸만큼 들여 쓰기 (또는 선택하고 Ctrl + K 누르기). –

+0

나는 이것으로 당혹 스럽다.'created_by = User.objects.get (created_by = user)','User' 모델에'created_by' 컬럼이 있습니까? 이것은 FieldError로 실패 할 것이다. 또한 전체 추적도 도움이 될 것입니다. –

답변

7

전체 추적 표시가 표시되지 않으므로 오류가 발생한 위치를 정확히 추적하는 데 도움이됩니다. (이것은 정확한 코드가 아닌 것으로 의심됩니다. 실제 오류 메시지가 아닙니다. 왜냐하면 rebus에 오류가 코드와 일치하지 않기 때문입니다.)

그러나 몇 가지 포인터가 있습니다. 첫째, 절약을 위해 양식을 사용하는 것 같지 않습니다. 그렇게했다면이 오류가 표시되지 않을 것입니다. 요청에서 수동으로 값을 가져 오는 대신 request.POST을 사용하여 양식을 인스턴스화 한 다음 저장해야합니다. 또한 값을 사용하기 전에 양식이 실제로 유효한지 확인하지 않습니다. 여기에 당신이 일을해야 무엇 :

if request.method == 'POST': 
    form = NewForm(request.POST) 
    if form.is_valid(): 
     new_obj = form.save(commit=False) 
     new_obj.created_by = request.user 
     new_obj.save() 
     return HttpResponseRedirect('/') 
else: 
    form = NewForm() 
return render_to_response('news/new_form.html', {'form': form}, 
          context_instance=RequestContext(request)) 

또한, 관리자는 완전히 무관 참고 - 기본 관리자가 이미 당신과 똑같은을하는 create 방법을 정의합니다.

+0

정말 고마워요! 그냥 그래야 작동합니다 : – dana

+0

:) 예. 지금 나는 체크 표시를보고, 그 의미를 이해한다 :) 나는 체크했다. – dana

관련 문제