Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Django ModelForm生成下拉输入?_Django_Python 3.x_Django Models_Django Forms - Fatal编程技术网

如何使用Django ModelForm生成下拉输入?

如何使用Django ModelForm生成下拉输入?,django,python-3.x,django-models,django-forms,Django,Python 3.x,Django Models,Django Forms,我有以下型号: from django.db import model class Fruit(models.Model): fruit_name = models.CharField(max_length=100) 还有这样一种形式: from django import forms from .models import SomeModel class FruitForm(forms.ModelForm): some_input = forms.CharField(m

我有以下型号:

from django.db import model

class Fruit(models.Model):
    fruit_name = models.CharField(max_length=100)
还有这样一种形式:

from django import forms 
from .models import SomeModel

class FruitForm(forms.ModelForm):
    some_input = forms.CharField(max_length=100)
    class Meta:
        model = Fruit
        fields = ['fruit_name']
fruit = [
    ('orange', 'Oranges'),
    ('cantaloupe', 'Cantaloupes'),
    ('mango', 'Mangoes'),
    ('honeydew', 'Honeydews'),
]
class TestForm(forms.Form):
    some_input = forms.CharField(max_length=100)
    favorite_fruit = forms.CharField(widget=forms.Select(choices=FRUIT_CHOICES))
指南向我展示了如何创建如下下拉列表:

from django import forms 
from .models import SomeModel

class FruitForm(forms.ModelForm):
    some_input = forms.CharField(max_length=100)
    class Meta:
        model = Fruit
        fields = ['fruit_name']
fruit = [
    ('orange', 'Oranges'),
    ('cantaloupe', 'Cantaloupes'),
    ('mango', 'Mangoes'),
    ('honeydew', 'Honeydews'),
]
class TestForm(forms.Form):
    some_input = forms.CharField(max_length=100)
    favorite_fruit = forms.CharField(widget=forms.Select(choices=FRUIT_CHOICES))
我想要实现的是,基于
fruit
模型的fruit\u id和fruit\u name列生成键/值元组列表,而无需手动将数据插入
果形


我错过了什么

通常,您可以通过以下方式执行此操作:

您可以更改
queryset=
参数,例如预先过滤queryset。例如,如果您只想显示以
A
开头的
水果
,可以进行如下筛选:

from django import forms

# example: only show fruit that starts with an A
class TestForm(forms.Form):
    some_input = forms.CharField(max_length=100)
    favorite_fruit = forms.ModelChoiceField(
        queryset=Fruit.objects.filter(fruit_name__startswith='A')
    )
来自django导入表单的

#示例:仅显示以A开头的水果
类TestForm(forms.Form):
某些输入=forms.CharField(最大长度=100)
favorite_fruit=forms.model选择字段(
queryset=Fruit.objects.filter(Fruit\u name\u startswith='A')
)