2010-07-07 3 views
2

간단합니다 - 질문에 대한 답변이있는 경우 질문에 대답 한 사람을 설정하고 싶습니다. 누군가 질문에 답을 얻는다면 양식 값을 설정하는 방법을 가르쳐 주시겠습니까? 나는 이것을 초기 값으로 설정할 수도 있지만 어떤 레코드가 응답되었는지 선택적으로 결정해야한다는 것을 알고있다. 이것은 더 단순 해 보였지만 이것을 이해하기 위해 머리카락을 잡아 당겨보고 있습니다. 누군가 나를 도울 수 있습니까?formset.save()의 formset에 외래 키 설정

모델은

class ProjectQuestion(models.Model): 
    question = models.CharField(max_length=255, editable=True) 
    answer_type = models.CharField(max_length=50, choices=VALUE_TYPE_CHOICES, editable=True) 
    answer = models.CharField(max_length=255, null=True, blank=True) 
    answer_comment = models.TextField(blank = True, null = True) 
    answered_by = models.ForeignKey(Employee, related_name="answered_by_test", null=True, blank=True) 
    answer_date = models.DateTimeField(auto_now = True, null=True) 
    objects = models.Manager() 


    def __unicode__(self): 
     return u'%s' % (self.question) 

간단하다 그리고 나타내는보기도 간단하다. commit의 값에 따라 저장 여부, 인스턴스 객체를 반환 form.save -

# views.py 
if request.method == "POST": 
    print request.POST 
    print request.user 
    formset = QuestionFormSet(data=request.POST, files=request.FILES, 
           queryset=ProjectQuestion.objects.filter(id__lt=shortname)) 
    print formset.forms 
    if formset.is_valid(): 
     person = Employee.objects.get(name__iexact = request.user.get_full_name()) 
     for i in range(0, formset.total_form_count()): 
      form = formset.forms[i] 
      if form.cleaned_data['answer']: 
       # THIS DOESN'T WORK... PLEASE FIX.. 
       form.save(commit=False) 
       form.answered_by = person 
       form.save() 
else: 
    active_section = ProjectQuestion.objects.filter(id__lt=shortname) 

답변

6

는이

if form.cleaned_data['answer']: 
    # THIS DOESN'T WORK... PLEASE FIX.. 
    question = form.save(commit=False) 
    question.answered_by = person 
    question.save() 
4

쇼크가 정답을 가지고 있어야되지 않습니다.

for form in formset.forms: 

하고 어떤 이유로 당신이 정말로 해당 인덱스 변수를 필요로했다면,이 :

for i in range(0, formset.total_form_count()): 
     form = formset.forms[i] 

훨씬 더 나은 기록이 그대로 : 측면의 문제로

는이 점에 유의 여전히 더 좋습니다 :

for i, form in enumerate(formset.forms):