Python django表单打印选择值

Python django表单打印选择值,python,django,Python,Django,我试图从django中的下拉菜单返回所选的选项值。选项(html格式)是从数据库的模型主键动态填充的 HTML <form class="student-ID-search" action="{% url 'new_coach_schedule' %}" method="post" > <select class="form-control" id="student_select"> <option>Select student ID</opti

我试图从
django
中的下拉菜单返回所选的选项值。
选项(html格式)是从数据库的模型主键动态填充的

HTML

<form class="student-ID-search" action="{% url 'new_coach_schedule' %}" method="post" >
<select class="form-control" id="student_select">
    <option>Select student ID</option>
        {% for student_data in students_data %}
            <option value="{{ student_data.pk }}">{{ student_data.pk }}</option>
        {% endfor %}
</select>
</form>

<button class="btn" type="submit" name="search_result" value="select>
    <i class="fa fa-search"></i>
</button>
forms.py

students_data = Student.objects.all()
search_result = NewStudentSearchForm(request.POST)
if 'search_result' in request.POST:
    test_print_to_screen = search_result['student_select']
    print(test_print_to_screen)
    args = {'students_data': students_data}
    return render(request, 'static/html/new_coach_schedule.html', args)
else:
    return render(request, 'static/html/new_coach_schedule.html', args)
class NewStudentSearchForm(forms.Form):
    search_field = forms.CharField(max_length=50)  # This is for something else.
    student_select = forms.ModelChoiceField(queryset=Student.objects.all(), empty_label=None)
当我使用
modelcooicefield
时,
test\u print\u to\u screen
不会打印出我在html选择框中选择的
所选选项。。而是打印出所有内容

例如:

但是,这会产生一个
堆栈跟踪错误

<ul class="errorlist"><li>student_select<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
  • 学生\u选择
    • 此字段为必填字段。
使用Django时,请调用表单的方法,然后如果该方法有效,请使用
cleaned_data
属性访问提交的值

students_data = Student.objects.all()
search_result = NewStudentSearchForm(request.POST)
if search_result.is_valid():
    cd = search_result.cleaned_data
    selected_student = cd['student_select']  # Here you get Student instance
使用Django时,请调用表单的方法,如果该方法有效,请使用
cleaned_data
属性访问提交的值

students_data = Student.objects.all()
search_result = NewStudentSearchForm(request.POST)
if search_result.is_valid():
    cd = search_result.cleaned_data
    selected_student = cd['student_select']  # Here you get Student instance

您应该检查
search\u result.is\u valid()
,然后您可以使用
search\u result.cleaned\u data['student\u select']
访问该值。我刚刚尝试过。它似乎返回了一个
键错误
。HMM您应该检查
search\u result.is\u valid()
,然后您可以使用
search\u result.cleaned\u data['student\u select']
访问值。我刚刚试过了。它似乎返回了一个
键错误
。hmmMy代码似乎给了我一个
KeyError
,我认为从浏览器中选择的选项似乎没有注册。从这里我能做什么?显示stacktrace。如果is_valid()为true,则选定的_学生必须存在于已清理的_数据中。我已更新我的问题,以包含stacktrace错误。您能帮我看一下吗?我在您的模板中看到了
。您需要添加name=“student\u select”属性,同时打印学生对象(10)
,因为您尚未定义学生模型的方法。所以它打印
对象()
selected\u student
已经是一个学生实例,您可以打印
selected\u student。
already我的代码似乎给了我一个
KeyError
,我想浏览器中的所选选项似乎没有注册。从这里我能做什么?显示stacktrace。如果is_valid()为true,则选定的_学生必须存在于已清理的_数据中。我已更新我的问题,以包含stacktrace错误。您能帮我看一下吗?我在您的模板中看到了
。您需要添加name=“student\u select”属性,同时打印学生对象(10)
,因为您尚未定义学生模型的方法。所以它打印
对象()
selected\u student
已经是一个学生实例,您可以打印
selected\u student.
已经
students_data = Student.objects.all()
search_result = NewStudentSearchForm(request.POST)
if search_result.is_valid():
    cd = search_result.cleaned_data
    selected_student = cd['student_select']  # Here you get Student instance