页面上有几种形式

时间:2012-02-06 13:36:08

标签: django forms validation save

我对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 个答案:

答案 0 :(得分:-1)

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

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