显示表单字段,即模板django中的表单选择字段

时间:2018-11-01 10:45:01

标签: django forms templates

我有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中编写选择字段

3 个答案:

答案 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)

choices [Django-doc]应该是:

  

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()

奇怪的是,您将MultipleChoiceFieldSelect小部件一起使用。通常,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