我是编程的初学者,我已经开始学习python和django,我想让我的下拉菜单从我的数据集中获取数据

ghg1uchk  于 2022-12-30  发布在  Go
关注(0)|答案(1)|浏览(93)

我试图建立一个机器学习算法,然后部署到我的网站使用django.So这里来的问题,我希望我的表单和下拉菜单.我使用html上的选择标签,而创建我的下拉菜单,但它是非常繁忙的给予每个值/选项单独.有没有反正我可以得到我的下拉菜单中的数据集的值,所以我不必通过上述过程.
我导入了我的模型,并成功地使用streamlit。我期待着做同样的我的网站,我在django建设。我希望这些值从我的数据集,我已经加载到我的views.py显示在我的下拉菜单上。请在这方面的帮助。x1c 0d1x

wnavrhmk

wnavrhmk1#

在django中,提供了表单类来简化这个过程。
What you want is to create a form class with a ChoiceField. You can grab the data in this form rather than the views.py and then create a tuple the choices available from your dataset. We will do this by overriding the form's init field so that load a dynamic set of choices instead of static set of choices.
示例:

from django import forms
from yourapp.models import Brand

class BrandForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(BrandForm, self).__init__(*args, **kwargs)

        brands = Brand.objects.all()
        brand_choices = tuple(i, brand.brand_name for i, brand in enumerate(brands))
        self.fields['brand'] = forms.ChoiceField(choices=brand_choices)

Now in views.py you need to initialize the form and pass it into the context when you call render()
然后,只需将{{ form }}放入html表单,将所有字段加载到表单中
(if您没有将窗体作为"form"传递到上下文中,您将需要更改{{ }}内部的引用)
附言:使用一组静态的选择,可以在类之外定义元组,并像这样定义类(不需要覆盖__init__):

class BrandForm(forms.Form):
    brand = forms.ChoiceField(choices=choices)

更多例子可以在django文档中找到:https://docs.djangoproject.com/en/4.1/topics/forms/

相关问题