如何更改特定 Django 管理模型中的时区?
How to change the timezone in the particular Django admin Model?
我想在 Django admin 的一个特定模型中更改时区,我该怎么做?
由于 Django 在数据库中以 UTC 保存时间,我想要的是在特定时区显示值,仅针对一个模型。不适用于整个项目。
例如我有一个模型:
class Student(models.Models)
created_at = models.DateTimeField()
当我为此模型打开 Django Admin 时,我想查看特定时区的时间(比如说 ETC),但让 Django 以 UTC 保存时间。
所以我找到了解决方案:为了完成我想完成的事情,我必须在 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 admin 中激活特定时区
from django.utils import timezone
timezone.activate("US/Eastern")
有了这个,您可以在您想要的上下文中更改时区。正如我在 add_view
、change_view
.
中所做的一样
首先,我重写了 add_view
方法,让我们可以在特定时区创建 Student
对象。其次,我覆盖了 change_view
以便我们可以在特定时区编辑已经存在的 Student
。第三,我创建了 created_at_etc
它将显示特定时区的日期。
有关详细信息,您可以使用 This Article。
我想在 Django admin 的一个特定模型中更改时区,我该怎么做?
由于 Django 在数据库中以 UTC 保存时间,我想要的是在特定时区显示值,仅针对一个模型。不适用于整个项目。
例如我有一个模型:
class Student(models.Models)
created_at = models.DateTimeField()
当我为此模型打开 Django Admin 时,我想查看特定时区的时间(比如说 ETC),但让 Django 以 UTC 保存时间。
所以我找到了解决方案:为了完成我想完成的事情,我必须在 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 admin 中激活特定时区from django.utils import timezone
timezone.activate("US/Eastern")
有了这个,您可以在您想要的上下文中更改时区。正如我在 add_view
、change_view
.
首先,我重写了 add_view
方法,让我们可以在特定时区创建 Student
对象。其次,我覆盖了 change_view
以便我们可以在特定时区编辑已经存在的 Student
。第三,我创建了 created_at_etc
它将显示特定时区的日期。
有关详细信息,您可以使用 This Article。