2
我有2個應用程序。django表單錯誤:「選擇不是可用選項之一」
輸入:具有包含下拉列表的區域:區域。下拉列表值來自結果數據庫(由用戶上傳)。填寫表格時,用戶需要從下拉列表中選擇值。
結果:對數據庫
現在我可以顯示下拉列表從輸入表格「輸入」應用程序的數據庫。 (如圖所示)。
我現在面臨的問題是,選擇的選擇,並提交後,出現如下圖所示的錯誤:
錯誤顯示像:選擇一個有效的choice.The選擇沒有之一可用的選擇。然後我不明白爲什麼,因爲我確實從下拉列表中選擇了選項。
在此先感謝您的幫助,指出問題所在。
models.py
from django import forms
from django.forms import ModelForm
from django.db import models
from dupont.models import Result
from datetime import date
from django.forms import widgets
class Input(models.Model):
company=models.CharField(max_length=100)
region=models.CharField(max_length=100)
def __unicode__(self):
return self.company
forms.py
from django import forms
from django.forms import ModelForm
from .models import Input
from dupont.models import Result
from django.contrib.auth.models import User,Group
from django.forms import widgets
from functools import partial
from django.forms.utils import ErrorList
class InputForm(forms.ModelForm):
company=forms.CharField(widget=forms.TextInput, label="Company",error_messages={'required': 'Please enter the company name'},required=True)
region = forms.ModelChoiceField(queryset=Dupont.objects.values('region').distinct(),widget=forms.Select(),empty_label="(Global)",to_field_name="supply_chain")
error_css_class='error'
required_css_class = 'required'
class Meta:
model = Input
fields = ('company', 'region')
views.py
from django.http import HttpResponseRedirect
from django.shortcuts import render,render_to_response,get_object_or_404
from inputform.forms import InputForm
from inputform.models import Input
from dupont.models import Result
from django.views.decorators.csrf import csrf_exempt
from django.views.generic.list import ListView
from django.contrib import messages
from django.template import RequestContext
from django.shortcuts import redirect
@csrf_exempt
def input(request):
if request.method == 'POST':
form = InputForm(request.POST)
if form.is_valid():
company = form.cleaned_data['company']
region = form.cleaned_data['region'] /Is this one correct?
form.save()
return redirect('result')
else:
print form.errors
else:
form=InputForm()
return render_to_response('inputform.html',{'form': form},context_instance=RequestContext(request))
HTML
<form method="post" action="{% url 'input' %}">
{% csrf_token %}
<!--company-->
<div class="field">
{{ form.company.errors }}
<label for="{{ form.company.id_for_label }}">Company:</label>
{{ form.company }}
</div>
<!--Region-->
<div class="field" >
<label> Select the Region:
{{ form.region }}
{% for region in form.region.choices %}
<option value="region" name= "region" id="id_region">{{region}} </option>
{% endfor %}
</label>
</div>
<!--submit-->
<div class="fieldWrapper">
<p><input type="submit" value="Submit" /></p></div>
</form>