[英]How to change the timezone in the particular Django admin Model?
我想在 Django 管理員中的一個特定 Model 內更改時區,我該怎么做?
由於 Django 在 UTC 數據庫中節省時間,我想要的是在特定時區顯示值,僅針對一個 model。 不適用於整個項目。
例如我有一個 model:
class Student(models.Models)
created_at = models.DateTimeField()
當我為此 model 打開 Django Admin 時,我想查看特定時區的時間(比如說 ETC),但讓 Django 節省時間。
所以我找到了解決方案:為了完成我想要完成的任務,我必須在ModelAdmin
class 中進行更改。
class StudentAdmin(Admin.ModelAdmin):
list_display = [..., "created_at_etc", ...]
def add_view(self, request, form_url='', extra_context=None):
timezone.activate("US/Eastern")
return super(ActivityAdmin, self).add_view(
request,
form_url,
extra_context
)
def change_view(self, request, object_id, form_url='', extra_context=None):
timezone.activate("US/Eastern")
return super(ActivityAdmin, self).change_view(
request,
object_id,
form_url,
extra_context
)
def get_time(self, time):
import pytz
fmt = '%Y-%m-%d %H:%M:%S %Z'
tz = pytz.timezone("US/Eastern")
dt = time.astimezone(tz)
return dt.strftime(fmt)
def created_at_etc(self, student):
return self.get_time(student.created_at)
created_at_etc.short_description = "Created At"
您可以使用 django 管理員激活特定時區
from django.utils import timezone
timezone.activate("US/Eastern")
有了這個,您可以在您想要的上下文中更改時區。 正如我在add_view
和change_view
中做的一樣。
首先,我重寫了add_view
方法,它可以讓我們在特定時區創建Student
object。 其次,我覆蓋了change_view
,以便我們可以編輯特定時區中已經存在的Student
。 第三,我創建了created_at_etc
它將顯示相對於特定時區的日期。
有關更多信息,您可以使用這篇文章。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.