python - 如果字段大于 12,如何让模型方法自动运行
问题描述
如果我的模型字段小时数超过 12.0,我希望自动设置 end_time,而无需用户保存甚至在应用程序中。有没有办法在模型方法中做到这一点,而用户不必保存时间输入?
模型.py
class Entry(models.Model):
TUID = models.IntegerField()
start_time = models.DateTimeField()
end_time = models.DateTimeField(blank=True, null=True, db_index=True)
seconds_paused = models.PositiveIntegerField(default=0)
pause_time = models.DateTimeField(blank=True, null=True)
date_updated = models.DateTimeField(auto_now=True)
hours = models.DecimalField(max_digits=11, decimal_places=2, default=0)
pause_time_end = models.DateTimeField(blank=True, null=True)
def _str_(self):
return self.TUID
def timeStop(self):
if self.hours >= 12:
self.end_time = timezone.now()
return self.end_time
解决方案
这个问题并不完全清楚,但我假设你的意思是当对象被保存时,end_time
如果它还没有设置,你想自动设置它。一种选择是在pre_save
挂钩中执行此操作,但我更喜欢覆盖该save()
方法。像这样的东西:
class Entry(models.Model):
...
def save(self, *args, **kwargs):
if (self.hours >= 12) and not self.end_time:
self.end_time = timezone.now()
super().save(*args, **kwargs)
推荐阅读
- encryption - 在 Redux 离线 npm 包中存储本地存储之前加密数据
- google-sheets - 使用 If 公式我如何使真实的陈述成为另一个公式
- python - 尝试使用 API 从网站获取数据时,Python 显示访问被拒绝
- typescript - 如何获取字符串类型的值
- c# - 如何通过定位 Web Api 项目并使用 lib 项目作为迁移程序集从库项目创建迁移?
- graphql - GraphQL,Shopify 获取所有产品或产品总数
- python-3.x - 有没有更简单的方法来提取字典的最后一个值?
- python - 如何从类中进行计算并将其写入文件
- html - JQuery mouseenter 影响元素组而不是 $(this) 元素
- spring-mvc - Razorpay Webhook 未触发