我有Forms.py文件,其中有一个选择字段,必须在template.html中显示它。
forms.py
Choices = [('Yelp',)]
class UtilitiesForm(forms.Form):
api_select = forms.MultipleChoiceField(widget=forms.Select(),
choices=Choices)
text_url = forms.CharField()
template.html
{% block body_content %}
<form action="/utilities/fetch-data/" method="post" id="utitliy__form">
<div class="form-row">
<label>Select an API</label>
{{ form.api_select }}
</div>
</form>
{% endblock body_content %}
我收到“值”错误,你们可以帮我如何在template.html中编写选择字段
答案 0 :(得分:1)
您无需对forms.py中的choice字段执行任何操作,您可以在模板中直接使用它。 模板
<form action="" method="post">
{% csrf_token %}
<label for="order_no">Order No.:</label>
<input type="text" class='form-control' value="{{Order}}" name="order_no" readonly><br>
<label for="isbn">ISBN No.:</label>
<input type="text" class='form-control' value="{{ISBN}}" name="isbn" readonly><br>
<label for="rate">Rate:</label>{{forms.rate}}(Rate us 10 is the Highest and 1 is the lowest)<br><br>
<label for="comment">Comments</label>{{forms.comment}}<br><br>
<input type="submit" class="btn btn-success">
</form>
Models.py
RATING=( (1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8), (9,9), (10,10) )
class returnbook(models.Model):
order_no=models.IntegerField(blank=True,null=True)
isbn=models.CharField(max_length=15)
rate=models.IntegerField(choices=RATING,default='1')
comment=models.TextField(max_length=20000,blank=True)
user=models.CharField(max_length=50)
class Meta:
unique_together = ('order_no', 'isbn')
def __unicode__(self):
return unicode(self.rate)
答案 1 :(得分:0)
2元组的可迭代对象(例如列表或元组),可用作 此字段的选择,或返回此类可迭代值的callable。 此参数接受与a的choices参数相同的格式 模型字段。有关选择,请参见模型字段参考文档。 更多细节。如果参数是可调用的,则每个参数都会对其求值 字段表单初始化的时间。默认为空列表。
在这里您提供了一个1元组的迭代。元组指定值和文本表示形式,例如:
API_SELECT_CHOICES = [('yelp', 'Yelp')]
class UtilitiesForm(forms.Form):
api_select = forms.ChoiceField(
widget=forms.Select,
choices=API_SELECT_CHOICES
)
text_url = forms.CharField()
奇怪的是,您将MultipleChoiceField
与Select
小部件一起使用。通常,Select
小部件用于选择确切个元素,而SelectMultiple
小部件用于选择 zero , one 或 more 元素。所以我在这里将字段更改为ChoiceField
。带有ChoiceField
小部件的Select
是有意义的,带有MultipleChoiceField
的{{1}}是有意义的,但是其他组合没有太大意义。
答案 2 :(得分:0)
以表格形式添加选择
forms.py
from django.contrib.auth.models import User
from django import forms
class UserForm(forms.ModelForm):
status = models.IntegerField(choices=((1, _("Unread")),(2, _("Read"))),default=1)
class Meta:
model = User
fields = ['first_name', 'last_name', 'status']
in views.py
from django.contrib.auth.models import User
from .forms import UserForm # Add form which is written in your forms.py
def index(request):
context = {}
form = UserForm() #Initiate
return render(request, 'index.html', {'form': form})
index.html ,您将获得html中的选择
<form action="{% url 'about' %}" method="POST" role="form">
{% csrf_token %}
{{ form }}
</form>
有关更多详细信息,请参阅此link