Django实现秒数人性化显示与Model转字典详解
本文介绍如何在Django中将秒数转换为包含天、时、分、秒的人性化字符串,利用gettext_lazy实现多语言支持。同时详解使用model_to_dict将Django Model实例转换为字典对象的方法,适用于API开发及数据序列化场景。
Django将秒数转换为人可读时间格式
在Django开发中,有时需要将原始秒数转换为更易读的时间格式,例如“X天X小时X分”。实现这一功能的核心逻辑涉及时间单位的换算与多语言文本处理,具体代码实现如下所示:
秒数转换代码实现
from django.utils.translation import ngettext_lazy as _n
def humanize_seconds(secs):
a_day = 86400
an_hour = 3600
a_minute = 60
timetot = ''
total_secs = secs
if secs > a_day: # 60sec * 60min * 24hrs
days = int(secs // a_day)
# timetot += "{} {}".format(int(days), _('days'))
timetot += _n('%(num)s day', '%(num)s days', days) % {'num': days}
secs = secs - days * a_day
if secs > an_hour:
hrs = int(secs // an_hour)
# timetot += " {} {}".format(int(hrs), _('hours'))
timetot += ' '
timetot += _n('%(num)s hour', '%(num)s hours', hrs) % {'num': hrs}
secs = secs - hrs * an_hour
if secs > a_minute and total_secs < a_day:
mins = int(secs // a_minute)
timetot += ' '
timetot += _n('%(num)s minute', '%(num)s minutes', mins) % {'num': mins}
secs = secs - mins * a_minute
if secs > 0 and total_secs < an_hour:
secs = int(secs)
timetot += ' '
timetot += _n('%(num)s second', '%(num)s seconds', secs) % {'num': secs}
return timetot
if __name__ == "__main__":
print(humanize_seconds(360200))
Django Model转换为字典的方法
除了时间格式化,Django中另一个常见需求是将数据库模型(Model)实例转换为字典格式,以便于数据交互或序列化。以下是将Model转换为字典的相关知识点与代码示例:
Model转字典代码示例
from django.forms.models import model_to_dict
from projects.models import ProjectInformation
site = ProjectInformation.objects.get(id=6)
dict = model_to_dict(site)
dict
{'CRFmethod': '',
'EDCprovider': '',
'acceptancenum': '',
'add_time': datetime.datetime(2017, 4, 20, 8, 4, 42, 751202, tzinfo=<UTC>),
'begindate': None,
'clinicalassis': '',
'clinicalnum': '',
'created_by': '',
'created_date': None,
'enddate': None,
'ethicsreviewdate': None,
'ethicsreviewpers': '',
'ethicsreviewres': '',
'ethicsreviewunit': '',
'id': 6,
'isimport': None,
'leaderunit': None,
'localcases': None,
'medicalequipment': '',
'mequipmenttype': '',
'multicenter': '',
'plannum': '',
'proenname': '爱上地方',
'proname': '打士大夫',
'prostatus': '',
'prosummary': '',
'protype': '打是否',
'regstudy': '是',
'reportdate': None,
'reportnum': '',
'reportversion': '',
'researchdesign': '',
'researchtype': '',
'responsible': '',
'studytype': '器械类',
'telephonenum': None,
'totalcases': None,
'treatmenttype': None,
'unitnum': None}
总结
通过上述代码示例,我们掌握了利用Django内置工具进行时间人性化展示以及模型数据字典化的技巧。这些方法能有效提升开发效率,确保数据展示的友好性与数据处理的便捷性。
以上内容介绍了Django中秒数转换及Model转字典的具体实现方式,希望能为开发者提供实际帮助。若在使用过程中遇到任何问题,欢迎留言交流,小编会及时回复。感谢大家对本站的支持!如果您觉得本文对您有帮助,欢迎转载,请注明出处,谢谢!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









