フォームでの国際化を可能にするのに苦労しています。私が読んだドキュメントと投稿を理解している限り、フォームの国際化を機能させるには、アプリに次の設定を追加する必要があります。
- settings.pyでUSE_L10NをTrueに設定します。USE_L10N = True
ビューでロケールを設定します。
import locale locale.setlocale(locale.LC_ALL, 'de_DE')
フォームフィールドセットごとに、ローカライズをTrueに設定します。
class ExpenditureForm(forms.ModelForm): class Meta: model = Expenditure fields = ('gross_value', 'tax', 'receipt_date', 'currency', 'description', 'receipt',) def __init__(self, *args, **kwargs): super(ExpenditureForm, self).__init__(*args, **kwargs) self.fields['gross_value'].localize = True self.fields['gross_value'].widget.is_localized = True #added this as reaction to comments.
簡略化されたモデルは次のようになります。
class Expenditure(models.Model):
user = models.ForeignKey(User)
purchase_order_membership = models.ForeignKey(PurchaseOrderMembership)
month = models.PositiveIntegerField(max_length=2)
year = models.PositiveIntegerField(max_length=4)
net_value = models.DecimalField(max_digits=12, decimal_places=2)
gross_value = models.DecimalField(max_digits=12, decimal_places=2)
これらの手順を実行しましたが、Djangoは、ドイツ語表記で必要な小数点記号としてのコンマではなく、小数点記号としてドットを使用した数値入力のみを受け入れます。
だからおそらく私は一歩を逃した。ロケールをどこに設定するかもわかりません。ビューは適切な場所ではないと思います。各リクエストのビューでロケールを設定するのはそれほど難しいことではありません。
ご協力いただきありがとうございます。