2012-03-13 21 views
10

Tôi có thông tin datetime được lưu trữ trong cơ sở dữ liệu dưới dạng UTC. Tôi đang hiển thị thông tin này bằng cách sử dụng quản trị Django.Làm cách nào để bạn nhận biết múi giờ của Django-admin?

Có cách nào để hiển thị thông tin datetime cho múi giờ hiện tại của người dùng cuối trong quản trị Django không?

Thông thường tôi nghĩ rằng logic cho điều này sẽ ở trong lớp mẫu/xem, tuy nhiên, Django-admin ẩn tất cả điều này khỏi bạn và có vẻ như tôi sẽ phải ghi đè nhiều tệp ẩn (mà tôi không có) t muốn làm).

Một ý tưởng là để phân lớp DateTimeField trong các mô hình và làm cho nó chuyển đổi nó thành múi giờ địa phương bất cứ khi nào bạn lấy nó từ cơ sở dữ liệu, mặc dù tôi không chắc chắn nếu điều này sẽ làm việc.

Bất kỳ ai có bất kỳ đề xuất nào? Cảm ơn.

+1

Tôi thực sự muốn biết vì tôi phải thực hiện việc này theo cách thủ công. Nếu không ai đến với bất cứ điều gì tôi sẽ đăng hack của tôi - về cơ bản là một templatetag. – jpic

+0

hey @jpic ..i sẽ không bận tâm khi nhìn vào hacks của bạn. Đó là một cái gì đó tôi có thể phải nghỉ mát nếu tôi không thể tìm thấy một giải pháp sạch sẽ. Chúc mừng. – keyworks

Trả lời

3

Hỗ trợ múi giờ địa phương có sẵn trong số Django 1.4 sắp phát hành sớm.

+0

Rõ ràng hỗ trợ múi giờ từ Django 1.4 sẽ không hỗ trợ quản trị Django. xem bài của Danny dưới đây. – keyworks

+0

Vâng, như đã đề cập trong [tài liệu] (https://docs.djangoproject.com/en/dev/topics/i18n/timezones/#selecting-the-current-time-zone) và trong chuỗi email của Danny, nó là không Không phải là một điều dễ dàng để thực hiện ... Nhưng, về mặt tươi sáng, nó ít nhất phải dễ dàng hơn rất nhiều so với các phiên bản trước đó. ;) – roam

+0

Django 1.4 hỗ trợ múi giờ cho django-admin. Tôi đã làm theo [hướng dẫn di chuyển] này (https://docs.djangoproject.com/en/dev/topics/i18n/timezones/#time-zones-migration-guide) và nó hoạt động hoàn hảo. – keyworks

6

Django 1.4 sẽ giới thiệu hỗ trợ múi giờ nhưng quản trị viên sẽ vẫn chưa sử dụng nó. Vẫn còn những câu hỏi xung quanh việc thực hiện múi giờ để "chúc phúc" (pytz), nơi lưu trữ múi giờ cho mỗi người dùng (không có auth.hữu cơ sở dữ liệu được tạo sẵn. Người dùng về cơ bản không thể chạm vào mà không buộc mọi người dùng Django đồng bộ hóa cơ sở dữ liệu của họ), và chưa có giao diện người dùng cho lựa chọn múi giờ.

Vì vậy, các bộ phận ở đó nhưng nó vẫn là DIY ở giai đoạn này, xin lỗi.

Xem các chủ đề tôi bắt đầu trên django-phát triển http://groups.google.com/group/django-developers/browse_thread/thread/1386a2bf73babc6a

+0

Xin chào Danny, django-admin trong django 1.4 dường như hỗ trợ múi giờ. Tôi đã không có vấn đề thực hiện nó bằng cách làm theo các hướng dẫn di chuyển trong tài liệu django. – keyworks

+1

Câu trả lời của tôi là cho câu hỏi của bạn "Có cách nào để hiển thị thông tin datetime cho múi giờ hiện tại của người dùng cuối trong quản trị Django không?" - trong quản trị Django, tất cả người dùng của bạn sẽ thấy cùng một ngày giờ bất kể họ ở đâu. (vì những lý do nói trên) –

0

Nếu bạn biết những gì múi giờ bạn muốn sử dụng, có những kỹ thuật để gây nhập dữ liệu và hiển thị trong các admin để sử dụng múi giờ đó. Xem bài đăng trên blog https://www.caktusgroup.com/blog/2014/01/09/managing-events-explicit-time-zones/

Trong trường hợp của tôi, tất cả người dùng quản trị đều ở múi giờ của máy chủ, vì vậy tôi có thể sử dụng phương pháp này để quản trị viên sử dụng múi giờ đó. Lưu ý rằng điều này được thực hiện trên cơ sở từng trường, thay vì trên toàn cầu, tuy nhiên, và tôi không biết cách để có được một date_hierarchy để sử dụng các ngày liên quan đến múi giờ này.

Các vấn đề liên quan