0

検証前にモデルフォームの非モデルフィールドにデータベースからの値を入力するにはどうすればよいですか?

if request.POST:
        formset = StudentScheduleFormSet(request.POST,)
        for form in formset: 
            if not form.initial.get('course_term'):
                form.initial['course_term'] = CourseTerm.objects.get(course=form.data['course'], term=form.data['term'])
            if form.is_valid():
                form.save()
        if formset.is_valid():
            formset.save()

私はこれと__init__、フォームの変更を含む約20のバリエーションを試しましたが、近づき続けていますが、完全には実現できません.

4

1 に答える 1

1

dataの代わりにが必要ですinitial

これを試すことができます:

if request.POST:
        formset = StudentScheduleFormSet(request.POST,)
        for form in formset: 
            if not form.data['course_term']:
                form_obj.course_term = CourseTerm.objects.get(course=form.cleaned_data['course'], term=form.cleaned_data['term'])
            if form.is_valid():
                form.save()
        if formset.is_valid():
            formset.save()

また

if request.POST:
        formset = StudentScheduleFormSet(request.POST,)
        for form in formset: 
            if form.is_valid():
                if not form.cleaned_data.get('course_term'):
                    form_obj = form.save(commit=False)
                    form_obj.course_term = CourseTerm.objects.get(course=form.cleaned_data['course'], term=form.cleaned_data['term'])
                    form_obj.save()
                else:
                    form.save()
        if formset.is_valid():
            formset.save()
于 2013-06-24T16:01:15.730 に答える