Python Django模型-小时数计算器
晚上好! 我有个问题。我在网上找不到如何解决我的问题。我想有一个数据库行,我可以把小时-不是日期时间或时间,但例如01:34(1小时34分钟)。我不知道该怎么办有人能帮我吗Python Django模型-小时数计算器,python,django,model,Python,Django,Model,晚上好! 我有个问题。我在网上找不到如何解决我的问题。我想有一个数据库行,我可以把小时-不是日期时间或时间,但例如01:34(1小时34分钟)。我不知道该怎么办有人能帮我吗 关于一种常见的解决方案是在整数字段中存储分钟或秒,然后在输出或渲染时格式化总分钟数 将秒显示为分钟的示例模板标记:秒 @register.filter def custom_time_format(seconds_total): minutes, seconds = divmod(seconds_total
关于一种常见的解决方案是在整数字段中存储分钟或秒,然后在输出或渲染时格式化总分钟数 将秒显示为分钟的示例模板标记:秒
@register.filter
def custom_time_format(seconds_total):
minutes, seconds = divmod(seconds_total, 60)
return f"{minutes}:{seconds}"
模板代码示例,假设标记文件名为custom_time_tags.py
{% load custom_time_tags %}
{{ time_stored_as_int|custom_time_format }}
你能详细说明一下你想要克服的限制吗? 例如,为什么datetime不能满足您的需要
没有任何其他信息,我会说,你可以考虑一个文本字段,它有一个特定的格式约束(如:H:M)用于输入,并且可以将该值保存为一个整数(仅将小时和分钟转换为分钟)。 如果这来自用户输入,那么最好在模型表单或模型上执行验证(失败时引发ValidationError)
例如,根据,你应该能够做这样的事情class CustomTimeField(models.IntegerField):
description = "A field to save time (str) H:M as tot minutes (int) in db, but act like a str"
def get_db_prep_value(self, value, *args, **kwargs):
if value is None:
return None
h, m = value.split(":")
return int(h * 60 + m)
def to_python(self, value):
if value is None or isinstance(value, int):
return value
try:
return f"{value//60}:{value%60}"
except (TypeError, ValueError):
raise ValidationError("This value must be a string or an int.")
def from_db_value(self, value, expression, connection, context):
return self.to_python(value)
def formfield(self, **kwargs):
from django.forms import TextField
defaults = {'form_class': TextField}
defaults.update(kwargs)
return super(CustomTimeField, self).formfield(**defaults)
在你们的模型中,这是一个
TextField
吗?没有限制,它应该像一个小时日志,然后我可以总结一下