如何在 DRF 序列化器中使用 django.contrib.humanize 过滤器

How to use django.contrib.humanize filter in DRF serializers

是否可以在序列化程序上为 drf 使用 Django humanize 过滤器

我试过将 naturaltime 放入 to_representation 方法中,如下所示

def to_representation(self, instance):
    representation = super(ListUsersSerializer,
                           self).to_representation(instance)
    representation['last_login'] = instance.last_login(naturaltime)

但是没用

是的,您可以通过 naturaltime 过滤器传递数据,其中:

from django.contrib.humanize.templatetags.humanize import <strong>naturaltime</strong>

def to_representation(self, instance):
    representation = super().to_representation(instance)
    representation['last_login'] = <strong>naturaltime(</strong>instance.last_login<strong>)</strong>
    return representation

请注意,Django 的 naturaltime 在数字及其单位之间使用 non-breaking space [wiki],而不是正常的 space,因此:

>>> naturaltime(datetime(2019, 11, 25))
'2\xa0years, 2\xa0months ago'