Tôi đang viết một ứng dụng Django để sử dụng ở một quốc gia nơi chúng sử dụng dấu phẩy là decimal separator. Tôi có một mô hình có chứa một số django.db.models.DecimalField
và tôi sử dụng model forms. Làm cách nào để tạo trường biểu mẫu kết quả bằng cách sử dụng dấu phẩy và chấp nhận dấu phẩy lại từ người dùng?Tạo các biểu mẫu Django sử dụng dấu phẩy làm dấu phân cách thập phân
Tiếp theo advice của jweyrich, tôi đã nâng cấp ứng dụng của tôi từ Django 1,1 đến Django 1.2 và sửa settings.py
tôi để chứa những điều sau đây:
LANGUAGE_CODE = 'nb'
LANGUAGES = (
('nb', 'Norwegian'),
)
USE_I18N = True
USE_L10N = True
DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = ' '
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
)
Theo như tôi có thể thấy, đây là tất cả những gì the documentation cuộc gọi cho. Nó bây giờ làm việc cho các biểu mẫu nếu tôi đặt localization=True
trên trường biểu mẫu. Tuy nhiên, nó hoạt động ở cả model forms cũng không phải the admin site.
Tôi đã phát hiện ra một Django ticket và kết quả là Django changeset từ trước bản phát hành 1.2. Nếu tôi hiểu chúng một cách chính xác, nó thường là trường hợp các widget sử dụng tự động định dạng bản địa, nhưng sau khi bản địa hóa bản vá này phải được bật một cách rõ ràng bằng cách đưa tham số từ khóa localization=True
vào trường biểu mẫu. Có cách nào để tạo biểu mẫu quản trị viên đặt localization=True
trên các trường của họ không?
Giải pháp rực rỡ và thanh lịch. – scum
Tôi muốn làm cho nó một mixin: 'LocalizationMixin (đối tượng): ...' và 'FooForm (LocalizationMixin, forms.ModelForm)', vì vậy bạn có thể tiếp tục sử dụng ví dụ: 'FooForm (LocalizationMixin, floppyforms.ModelForm)' – Webthusiast
Điều gì sẽ xảy ra nếu bạn muốn bật tính năng bản địa hóa trực tiếp cho Mô hình? Không phải ModelForms. Trường hợp sử dụng: Xem phản hồi dữ liệu đăng bài yêu cầu AJAX HTTP và muốn lưu trữ dữ liệu đó (chứa các số có dấu phẩy là dấu phân tách nghìn) trong một Mô hình có trường thập phân. Không thể tìm thấy giải pháp cho điều đó. – jorgeas80