Django中编写组合框的最佳方式是什么?

6

我正在尝试在Django中创建一个组合框。 我只能用HTML来做。 是否有基于表单的Django代码可以实现它? 例如,我想要一个包含城市的组合框,我可以选择并点击提交按钮将城市发送到另一页。 谢谢。


请查看表单文档 https://docs.djangoproject.com/en/1.7/ref/forms/widgets/#selectmultiple ,这可能正是您所需要的。 - Augusto Hack
2个回答

12

如果你有一个固定的城市列表,你可以使用ChoiceField创建一个组合框:

from django import forms

class SelectCityForm(forms.Form):
    CITY_1 = 'city_1'
    CITY_2 = 'city_2'
    CITY_CHOICES = (
        (CITY_1, u"City 1"),
        (CITY_2, u"City 2")
    )
    cities = forms.ChoiceField(choices=CITY_CHOICES)

如果你要将城市保存到数据库中,可以使用 ModelChoiceField

class SelectCityForm(forms.Form):
    cities = forms.ModelChoiceField(queryset=City.objects.all())

为什么在 CITY_CHOICES 元组的末尾加上一个点? - Serge Kishiko
@SergeKishiko 已修复。这是一个打字错误。谢谢! - amatellanes
太棒了!非常感谢! - Nico Coallier
为什么需要 CITY_1CITY_2 常量?没有它们也可以正常运行,这里。 - DarkTrick

5
如果您有一个城市列表,您可以创建一个像这样的form
class myForm(forms.Form):
    city_list = ['city1','city2']
    city = forms.ChoiceField(choices=city_list)

但是,如果您的城市不在您的模型中,您可以使用以下方法:
class myForm(forms.Form):
    city = forms.ModelChoiceField(queryset=City.objects.all())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接