首页 > 解决方案 > Django:下拉框

问题描述

我的 forms.py 有这个:

  SIZE_CHOICES = (
    ('s', 'Small'),
    ('m', 'Medium'),
    ('l', 'Large')
)

    class ChooseSize(forms.Form):
        size_choice = forms.ChoiceField(choices=SIZE_CHOICES)

我的 product_page.html 尝试实现这种形式:

<form method="POST" class="card-body">
          {% csrf_token %}
      <div>
            {{ form.size_choice }}
     </div>
</form>

由于某种原因 size_choices 没有出现在网页上。是什么赋予了?

我的意见.py:

class ItemDetailView(DetailView):
    model = Item
    template_name = "home/product-page.html"

标签: htmldjangoformsweb

解决方案


我试着举个例子,也许它对你有帮助。

你的模型是这样的:

  SIZE_CHOICES = (
    ('s', 'Small'),
    ('m', 'Medium'),
    ('l', 'Large')
)
class YourModel(models.Model):
      size = models.CharField(max_length=10, blank=True, default='',choices=SIZE_CHOICES,verbose_name="size")

形式:

class SizeForm(forms.ModelForm):

    def __init__(self, *args, **kargs):
        super(SizeForm, self).__init__(*args, **kargs)

    class Meta:
         model = YourModel
         fields = '__all__'

你的看法

def your_view(request):
    form = SizeForm()
    return render_response('product_page.html',{'form': form})

模板

    <form method="POST" class="card-body">
              {% csrf_token %}
          <div>
                {% for x,y in form.fields.size_choice.choices %}
                {{x}} --> {{y}}
                {% endfor %}
         </div>
    </form>

推荐阅读