Django:国家下拉列表?

Use*_*ser 19 django country django-forms django-widget drop-down-menu

我有一份地址信息表.其中一个字段是地址国家/地区.目前这只是一个文本框.我想要一个下拉列表(ISO 3166国家).我是一个django新手,所以我还没有使用过Django Select小部件.有什么好办法呢?

在某个地方对文件中的选项进行硬编码?把它们放在数据库中?在模板中?

Juh*_*nen 32

查看CharField的" choices "参数.

您可能还想看看django-countries.

  • 您可以使用 Django 中已包含的“pytz”,而不是额外的“django-countries”依赖项。请参阅下面的示例(/sf/answers/4373033241/)。 (2认同)

aeh*_*lke 16

Django国家

from django_countries.fields import CountryField

class Foo(models.Model):
    country = CountryField()
Run Code Online (Sandbox Code Playgroud)

  • 出于某种原因,这种导入并不适用于我.我使用`来自django_countries.fields导入CountryField`. (2认同)

Use*_*ser 9

结束使用下面的代码片段,它基本上定义了两个字符国家/地区代码元组的元组.此外,它定义了一个名为CountryField的自定义字段类型,并将choices参数默认为上面定义的元组.这会自动呈现为下拉列表.

http://djangosnippets.org/snippets/494/

  • django-countries 提供的完全一样。它是一个可重用的组件。 (2认同)
  • djangosnippets 评论中的某人建议使用此代码段:http://djangosnippets.org/snippets/1476/ 它是最新的并修复了“maxlength”错误。 (2认同)

Asi*_*nox 8

Django国家

from django_countries.countries import COUNTRIES

class CountryForm(forms.Form):
      country= forms.ChoiceField(COUNTRIES)
Run Code Online (Sandbox Code Playgroud)

  • 嗨......有一个问题,当这个表格被呈现时,默认它显示'阿富汗',这是选择集中的第一个国家当然......但是如果不需要国家字段怎么办?意思是,默认显示----或类似 (2认同)
  • 导入位置似乎改变了它现在```来自django_countries进口国家``` (2认同)

Wto*_*wer 5

正如之前的答案所述,有一个CountryFieldin django-countries。这是一个模型字段。

如果在普通表单(不是模型表单)中需要表单字段,则在django-countriesv3.x 中(确实在 3.3 中进行了测试)可以使用以下内容:

from django_countries.data import COUNTRIES

class MyForm(forms.Form):
    country = forms.ChoiceField(sorted(COUNTRIES.items()))
Run Code Online (Sandbox Code Playgroud)