Django流程形式的步骤

时间:2014-03-28 15:44:03

标签: python django forms process

enter image description here 大家好,我正在尝试在Django注册后完成配置文件。 因此,一旦用户注册,他就会使用以下步骤

第1步:注册(工作)

第2步:选择大学(显示大学的选择,但必须通过所选大学才能过滤第3步中的课程)

第3步:选择课程并添加年份。在这里,用户将能够选择一门课程并输入他的学习年份。然后,学习年份将存储在studies_student(年度字段)中。此外,我还存储了enrolled_id选择的学生课程。

我需要的是将大学从第2步发送到第3步,过滤课程并提交enrolled_idyear

views.py

def step2(request):
    universities = University.objects.order_by('name').distinct()
    return render_to_response("registration/step2.html", {'universities': universities},  RequestContext(request))


def step3(request):
    courses = Course.objects.all()
    args = {}
    if request.method == 'POST':
        form = Enroll(request.POST)
        if form.is_valid():
            return render_to_response("registration/complete.html", {'courses': courses},  RequestContext(request))
    else:
        form = Enroll()

    args['form'] = form
    return render(request, 'registration/complete.html')


def complete(request):
    return render(request, 'registration/complete.html')

forms.py

class Enroll(forms.ModelForm):
    course = forms.ChoiceField()
    year = forms.IntegerField(validators=[MinValueValidator(1),
                                          MaxValueValidator(7)])

    class Meta:
        model = Student
        fields = ('year',)

    def save(self, commit=True):
        student = super(Student, self).save(commit=False)

        if commit:
            student.save()

        return student

对于长篇文章感到抱歉,但我试图这样做几天,所以我试着解释我的目标。

1 个答案:

答案 0 :(得分:0)

我强烈建议为UniversityCourse创建separete模型。 您可以在课程表

中为大学创建ForeignKey
class University(forms.ModelForm):
      //university attributes

class Course(forms.ModelForm):
     //course attrbutes
     university = forms.ForeignKey('University')

当您拥有course对象时,您可以获得相应的university对象,例如

course_obj.university

https://docs.djangoproject.com/en/1.4/topics/db/examples/many_to_one/