Отобразить поле формы, т.е. поле выбора формы в шаблоне django - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть файл 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 голосов
/ 01 ноября 2018

Добавьте выбор в форму

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']

в 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>

для более подробной информации, пожалуйста, перейдите по этой ссылке

0 голосов
/ 02 ноября 2018

Вам не нужно ничего делать с полем выбора в forms.py, вы можете напрямую использовать его в своем шаблоне. шаблон

<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)
0 голосов
/ 01 ноября 2018

choices [Django-doc] должно быть:

Либо итерация (например, список или кортеж) из 2-кортежа для использования в качестве выбор для этого поля или вызываемый, который возвращает такой итерируемый. Этот аргумент принимает те же форматы, что и аргумент выбора для модельное поле. См. Справочную документацию по полю модели на выбор Больше подробностей. Если аргумент является вызываемым, он оценивается каждый время форма поля инициализируется. По умолчанию используется пустой список.

Здесь вы предоставляете итерацию из 1 кортежа. В кортеже укажите значение и текстовое представление, например:

API_SELECT_CHOICES = [<b>('yelp', 'Yelp')</b>]

class UtilitiesForm(forms.Form):
    api_select = forms.<b>ChoiceField</b>(
        widget=forms.Select,
        choices=API_SELECT_CHOICES
    )
    text_url = forms.CharField()

Также странно, что вы использовали MultipleChoiceField с виджетом Select. Обычно виджет Select используется для выбора точно одного элемента, тогда как виджет SelectMultiple используется для выбора ноль , один или больше элементов. Поэтому я здесь изменил поле на ChoiceField. ChoiceField с виджетом Select имеет смысл, а MultipleChoiceField с SelectMultiple имеет смысл, но другие комбинации не имеют особого смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...