【问题标题】:Django process form in stepsDjango 处理表单的步骤
【发布时间】:2014-05-08 04:23:30
【问题描述】:

大家好,我正在尝试在 Django 中注册后完成个人资料。 所以一旦用户注册,他使用以下步骤

第 1 步:注册(作品)

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

第 3 步:选择课程并添加年份。在这里,用户将能够选择一门课程并输入他的学习年份。然后学习年份将存储在study_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

很抱歉,文字太长了,但我已经尝试这样做了好几天,所以我试图解释我的目标是什么。

【问题讨论】:

    标签: python django forms process


    【解决方案1】:

    我强烈建议为UniversityCourse 创建单独的模型。 您可以在课程表中为大学创建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/

    【讨论】:

    • 嗨,纳文!正如您在 db 图像中看到的那样,我已经有 2 个独立的 UniversityCourse 模型。那么有什么方法可以将所选的 University 从第 2 步传递到第 3 步,并按 university 过滤 courses
    • 重塑你的课程模型,为大学添加外键......一旦你有了,你可以对课程说“获取大学名称或 id 为 xyz 的所有课程”
    • 我已经有一个ForeignKey for University in Course 模型。我无法从表单中传递的问题。我读了这个link,但我真的很累。
    • 能否请您发布您正在使用的所有型号?
    • 当然!这是link。预先感谢您帮助我!真的很感激!
    猜你喜欢
    • 2023-04-02
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2015-07-04
    相关资源
    最近更新 更多