2014-04-16 2 views
0

내가 장고 아주 새로운 해요, 난이 오류 얻을 이유를 이해할 수 없다 : 나는 함께 상호 연결된 모델을 가지고 project_question_text.question_id may not be NULL 및 전망 :다른 모델을 처리하는 동안 모델을 만드는 방법은 무엇입니까?

class Question_Text(models.Model): 
    text_en = models.CharField(max_length=60, blank=True) 


class Question(models.Model): 
    user = models.ForeignKey(User) 
    question_text = models.ForeignKey(Question_Text) 
    viewed = models.BooleanField(default=False) 
    def __unicode__(self): 
     return self.question_text 

그리고보기 :

def add_question(request, project_id): 
    a = Project.objects.get(id=project_id) 
    if request.method == "POST": 
     f = QuestionForm(request.POST) 
     if f.is_valid(): 
      c = f.save(commit=False) 
      c.project = a 
      c.save() 

      messages.success(request, "Your question was added") 

      return HttpResponseRedirect('/projects/get/%s' % project_id) 

    else: 
     f = QuestionForm() 

    args = {} 
    args.update(csrf(request)) 

    args['project'] = a 
    args['form'] = f 

    return render_to_response('project/add_question.html', args) 

누군가 조언 해 주시기 바랍니다.

답변

0

오류 메시지가 project_question_text 테이블에 question_id 열의가 있음을 나타내는 것 같다, 그러나, Question_Text 모델은 Question 모든 외래 키가 포함되어 있지 않습니다. 내 생각 엔 Question_Text 모델에 question = models.ForeignKey(Question)과 같은 필드가 있었고 어떤 시점에서 모델 정의를 변경 한 것 같습니다. 모델이 아닌 경우에도 데이터베이스 테이블에는 이전 스키마가 반영됩니다.

가장 쉬운 해결책은 변경 한 테이블을 제거하고 syncdb를 다시 실행하는 것입니다. 다른 해결책은 이전 (즉, South)을 사용하는 것입니다.

약간 주제에서 벗어난 보조 노트, 표준 파이썬 코드 스타일 QuestionText이 될 것입니다 귀하의 Question_Text 모델에 약간 더 이상의 표준 이름을 의미 클래스 이름에 밑줄없이 낙타 표기법을 사용하여 제안합니다.

+0

@koniiik, 고마워요! 나는 이미 그것을 해결할 수 있었다. CamelCase를 가리켜 주셔서 감사합니다. 이전에는 그것에 대해 들어 보지 못했습니다. – user3310881

0

요청 매개 변수가있는 else 조건에서 새 개체를 초기화하는 것이 확실합니까?

def add_question(request, project_id): 
a = Project.objects.get(id=project_id) 
if request.method == "POST": 
f = QuestionForm(request.POST) 
if f.is_valid(): 
    c = f.save(commit=False) 
    c.project = a 
    c.save() 

    messages.success(request, "Your question was added") 

    return HttpResponseRedirect('/projects/get/%s' % project_id) 

else: 
    f = QuestionForm(request.POST) #Add request params to initialization 

args = {} 
args.update(csrf(request)) 

args['project'] = a 
args['form'] = f 

return render_to_response('project/add_question.html', args) 
+0

변경 사항, 불행히도. – user3310881

관련 문제