我试图将24小时格式的时间存储到Django模型中。我在模型中使用TimeField。到目前为止,当试图以标准的12小时格式存储时间时,它可以工作。 但是当试图以24小时格式存储时间时,它不再起作用,而是给出一个错误,说明给出有效时间。
我的应用程序将积分存储为小时。用户支付他们想要消费的小时数并相应地支付它。然后,我将剩余的积分存储在remaining_session_credits
中。当用户注册时,用户输入最大值为24的整数。这意味着用户最多只能使用24小时的积分。这就是为什么我试图在TimeField中存储24个整数。
到目前为止,这是我的代码:
我的模特
session_credits = models.TimeField(blank=True, null=True)
remaining_session_credits = models.TimeField(blank=True, null=True)
我的观点
def save_enrollment(request):
try:
data = json.loads(request.body.decode("utf-8"), parse_float=decimal.Decimal) if request.body.decode("utf-8") else {}
if data.get("session_credits", None) is not None:
data["remaining_session_credits"] = timedelta(hours=data.get("session_credits"))
return success("Success!")
except Exception as e:
return HttpResponse(str(e), status=400)
data.get("session_credits")
这是一个我转换为小时的整数。例如data.get('session_credits') = 24
我希望24
为时间格式,并保存在模型中的TimeField中。
答案 0 :(得分:1)
好的,据我所知,根据用户“消耗”积分的方式,您有两种选择。
如果他从注册时起“订阅”了x个小时,那么您可以只存储订阅到期的时间。您可以根据用户注册的时间和他购买的时间计算此值,并将该值存储在DateTime
字段中。然后,如果他的订阅已经过期,您可以检查当前时间。
如果他积极地需要做一些事情来“消费”学分,你如何衡量?这实现起来要困难得多。同样在这种情况下,最好将值存储为整数(IntegerField
)或Duration
,具体取决于信息的存储准确度。
答案 1 :(得分:-1)
如果您想支持数据的特定格式,例如24小时的milileary风格。将信息转换为文本。您只能使用Django数据格式和Sql平台数据格式。但是,当您以文本格式处理数据时,您可以控制用户界面,并且可以实现所有格式。