2012-02-06 67 views
0

我是相对较新的Django,并试图创建一个页面,在那里我问问题,并允许用户给出两个答案。所以我想显示一个问题列表,以及下面两个猜测的字段。我试图使用表单,但是我无法保存或验证从这些表单中获得的数据。 下面是我的相关代码。在页面上的几种形式

从models.py:

class Subject(models.Model): 
    subject = models.FloatField(verbose_name='ID') 

class SubjectForm(forms.Form): 
    subject = forms.FloatField() 

class General(models.Model): 
    question = models.CharField(max_length=400) 
    answer = models.FloatField() 

class Guess(models.Model): 
    general = models.ForeignKey(General) 
    subject = models.ForeignKey(Subject) 
    lower = models.FloatField('lower boundary') 
    upper = models.FloatField('upper boundary') 

class GuessForm(forms.Form): 
    lower = forms.FloatField() 
    upper = forms.FloatField() 

从views.py:

def questions(request): 
    if request.method == 'POST': # If answers were submitted 
     for question in all_questions: 
      form = GuessForm() 

      if form.is_valid(): 
       lower = request.POST.get('lower','') 
       upper = request.POST.get('upper','') 
       new_guess = Guess(pk = 'question', 
        subject = subject, 
        lower = lower, 
        upper = upper) 
       new_quess.save() 
       return HttpResponseRedirect('/general_knowledge/questions/thanks/') 
      else: 
       form = GuessForm() 
       csrfContext = RequestContext(request,{'form': form}) 

       return render_to_response('general_knowledge/question_form.html', 
        {'all_questions': all_questions}, 
        context_instance=RequestContext(request)) 

从模板

{% for question in all_questions %} 
    <form action="" method="post">{% csrf_token %} 
     <ol> 
      <p><LI> {{ question.question }}.</p> 
      <label for="lower">Lower boundary:</label><input type="text" name="lower"> 
      {{ form.lower.errors }} 
      <label for="upper">Upper boundary: </label><input type="text" name="upper"> 
      {{ form.upper.errors }} 
     </ol> 
    </form> 
{% endfor %} 
<input type="submit" value="Submit" /> 

回答

-1

你可以使用JQuery打印验证时提交,如下所示:

$("input[type="submit"]).click(function() { 
     if ($("#lower").text() == // some condition 
     { 
      $("#validation").show(); 
     } 
     else { 
      $("Form").submit(); 
     } 
    }); 
+0

尽管接受,我不明白这是如何回答问题的书面。这个问题关于如何在Django中验证和保存表单数据。在客户端的jQuery验证将是一个很好的补充,但这不是问题的关键。 – 2012-02-28 15:41:06

+0

@ PaulD.Waite如果这最终帮助了她 - 她可能不需要更多。这比0的答案好,如果你有更正确的答案,我会很高兴,如果你写。 – ParPar 2012-03-05 08:48:03

+0

非常真实,非常真实。 – 2012-03-05 12:14:01

相关问题