24

住所情報のフォームがあります。フィールドの 1 つは住所の国です。現在、これは単なるテキストボックスです。このドロップダウン リスト (ISO 3166 の国のリスト) が欲しいです。私は Django の初心者なので、まだ Django Select ウィジェットを使用したことさえありません。これを行う良い方法は何ですか?

ファイルのどこかに選択肢をハードコードしますか? それらをデータベースに入れますか?テンプレで?

4

16 に答える 16

34

CharField の「 choices 」パラメーターを確認してください。

django-countriesも参照してください。

于 2010-06-03T07:37:42.540 に答える
23

ジャンゴの国

from django_countries.fields import CountryField

class Foo(models.Model):
    country = CountryField()
于 2010-09-13T12:18:33.350 に答える
10

基本的に2文字の国コードのタプルのタプルを定義する以下のスニペットを使用することになりました。さらに、CountryField というカスタム フィールド タイプを定義し、choices パラメータを上記で定義したタプルにデフォルト設定します。これは、ドロップダウン リストとして自動的に表示されます。

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

于 2010-06-04T05:27:03.903 に答える
8

ジャンゴの国

from django_countries.countries import COUNTRIES

class CountryForm(forms.Form):
      country= forms.ChoiceField(COUNTRIES)
于 2010-08-28T21:54:37.903 に答える
5

2 つの低管理プロジェクト:

http://code.google.com/p/django-countries/

https://github.com/strange/django-country-utils

2 つのスニペット:

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

http://djangosnippets.org/snippets/1476/

今のところ、私はスニペットに行きます。

于 2011-11-24T15:47:43.967 に答える
3

これは国を含む素敵なライブラリです(そしてそれだけではありません):pycountry

その主な利点は、他のソリューションのハードコード化された国と比較して、Debian パッケージ pkg-isocodes のラッパーであることです (したがって、自動的に更新できます)。訳語もあります。

したがって、新しい国が表示されるか、既存の国が統合される場合、コードを変更する必要はありません。

このライブラリを使用して、たとえば国をモデルにした単純な Django アプリを作成すると便利であることがわかりました。

次に、ここで説明されているように、カスタム django-admin コマンドを使用して、「国」テーブルにデータを入力し、最新の状態に保つことができます:カスタム django-admin コマンドの作成

于 2014-01-20T21:45:06.413 に答える
1

それらをデータベースに入れる方が良い方法です。管理に便利。

于 2012-01-24T09:46:07.817 に答える
1

私はそれを使用して解決しましたmultiple=True

from django_countries.fields import CountryField    

class UserProfile(models.Model):
    countries = CountryField(multiple=True)

ドキュメントで詳細を読むことができます:

https://github.com/SmileyChris/django-countries

于 2018-08-20T20:29:21.843 に答える
0

解決策は次のとおりです。

from django_countries.fields import CountryField

class Foo(TimeStampedModel):

    country = CountryField()
于 2014-09-26T23:16:49.603 に答える