小编Edk*_*dke的帖子

如何将Django Admin中的DateTimeField格式化为localtime?

如何根据本地时间和时区格式化Admin中的DateTimeField?

我的settings.py:

    TIME_ZONE = 'Europe/Bratislava'
    LANGUAGE_CODE = 'en-us'
    USE_I18N = True
    USE_L10N = True
    USE_TZ = True
Run Code Online (Sandbox Code Playgroud)

pytz包已安装.

模型:

class Material(models.Model):
    category = models.ForeignKey(Category, null=True, blank=True) 
    code = models.CharField(max_length=10)
    description = models.CharField(max_length=30, blank=True, null=True)
    modified = models.DateTimeField(auto_now=True)
    created = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

还在设置中尝试了一些日期格式化,这没有改变datetime对象在管理列表显示中转换为字符串的方式:

DATETIME_FORMAT = 'd N Y'
DATE_FORMAT = 'd N Y'
Run Code Online (Sandbox Code Playgroud)

在数据库中,datetime正确存储,"2012-11-20 08:57:15.901341 + 01".但是在admin中显示时,它始终是UTC.

我可以在ModelAdmin中准备处理格式的方法,但这并不是真的干,因为我想我的管理类看起来像:

from django.utils.timezone import localtime

class MaterialAdmin(admin.ModelAdmin):
    list_display = ('code', 'modified_local', 'created')

    def modified_local(self, row):
        return localtime(row.modified)
    modified_local.admin_order_field = 'modified'
    modified_local.short_description = 'Modified'
Run Code Online (Sandbox Code Playgroud)

django django-admin django-timezone

7
推荐指数
1
解决办法
7752
查看次数

list_display - 布尔图标不适用于 BooleanField

简单情况,型号:

class Manufacturer(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200, null=True)
    active = models.BooleanField()
    ...
Run Code Online (Sandbox Code Playgroud)

和模型管理员:

class ManufacturerAdmin(admin.ModelAdmin):
    search_fields = ['name']
    list_filter = ['assortment_type', 'active']
    ordering = ('priority',)
    prepopulated_fields = {'slug':('name',),}
    list_display = ('name', 'active')
Run Code Online (Sandbox Code Playgroud)

仍在 Admin 活动列显示为 True/False 而不是图标。我可以创建方法并设置 Boolean = True 属性,但我失去了对列的排序能力。很明显,我在这里遗漏了一些东西。

django django-models django-admin

2
推荐指数
1
解决办法
1794
查看次数