2

ユーザー登録ページでPYtZパッケージを使って共通タイムゾーンを表示するドロップダウンリストを追加したい。ユーザーを登録するには、UserCreationForm クラスを使用しています。次のようにコードします。

class UserRegisterForm(UserCreationForm):
    email2 = forms.EmailField(label=_("E-mail"))

    def clean_email2(self):
        email2 = self.cleaned_data['email2']
        try:
            user = User.objects.get(email=email2)
        except User.DoesNotExist:
            return email2
        raise forms.ValidationError(_("Account with this e-mail address already exists."))

    def save(self, commit=True):
        user = super(UserRegisterForm, self).save(commit=False)
        user.email = self.cleaned_data["email2"]
        user.is_active = False
        if commit:
            user.save()
        return user

次のコマンドを使用して、すべての一般的なタイムゾーンのリストを取得しています:

>>> from pytz import timezone
>>> import pytz
>>> print(pytz.common_timezones)

それは印刷します: http://pastebin.com/RHdie16M

選択肢フィールドも認識していますが、それを使用することはお勧めできません。私は何をすべきか?

4

1 に答える 1

15

次のように選択フィールドを使用できます。

timezone = forms.ChoiceField(choices=[(x, x) for x in pytz.common_timezones])
于 2012-05-14T07:31:03.227 に答える