3

sとsdjango1.4を表示するアプリを作成しています。ユーザーがを選択できるビューを表示したいと思います。編集ページが表示されると、レッスンに関連付けられているコースがデフォルトで選択された状態で表示されます。LessonCourseedit_lessonCourse

このようなビューを書いてみました

def get_form_data(request):
    return request.POST if request.method == 'POST' else None

def edit_lesson(request,id,template_name):
   lesson = get_object_or_404(Lesson,pk=id,author=request.user)
   form_data = get_form_data(request)
   course_choices_form = CourseChoicesForm(form_data)
   ...
   context = {'course_choices_form':course_choices_form,...}
   if request.method == 'POST' and ....:
       ...

   #if GET method ,display the form with initial data
   course_choices_form = CourseChoicesForm(initial={'courseoption':lesson.course})
   context.update({'course_choices_form':course_choices_form})
   print "context['course_choices_form'].initial=",context['course_choices_form'].initial
   return custom_render(request,context,template_name)

CourseChoicesFormは次のようなものです

class CourseChoicesForm(forms.Form):
    courseoption = forms.ChoiceField(choices=[],required=False,label='Course')
    def __init__(self, *args, **kwargs):
        super(CourseChoicesForm, self).__init__(*args, **kwargs)
        self.fields['courseoption'].choices = [(x.id,x.title) for x in Course.objects.all()]

edit_lessonテンプレートでは、course_choices_formを次のように表示しています。

{{ course_choices_form.as_p}}

それでも、ドロップダウンリストにはレッスンのコースは表示されませんが、Course.objects.all()の最初のエントリのみが表示されます。

誰かが私が間違っていることを教えてもらえますか?

4

1 に答える 1

3

これが私がしていることです:

class CourseChoicesForm(forms.ModelForm):
     courseoption = forms.ModelChoiceField(Courses.objects.all())

Djangoエンジンは、ChoiceFieldを満たすタプルのリストを作成するための面倒を見てくれます。はCourses.objects.all()任意のクエリセットにすることができます。

https://docs.djangoproject.com/en/dev/ref/forms/fields/#fields-which-handle-relationships

于 2012-09-23T10:12:49.783 に答える