【问题标题】:Switch Boolean on selected date and time在选定的日期和时间上切换布尔值
【发布时间】:2021-08-11 13:59:43
【问题描述】:
我想在给定的 expiry_datetime 将 expiry boolean 从 false 切换为 true
...
expiry = models.BooleanField(default=False)
expiry_datetime = models.DateTimeField(null=True)
有可能吗?
【问题讨论】:
标签:
javascript
python
django
django-models
pip
【解决方案1】:
您可以将其设为属性或注释,从而删除 expiry 字段,例如:
from django.db import models
from django.utils.timezone import now
class MyModel(models.Model):
expiry_datetime = models.DateTimeField(null=True)
@property
def expiry(self):
return self.expiry_datetime is None or self.expiry_datetime <= now()
您还可以使用以下方法过滤expiry_datetime:
from django.db.models import Q
from django.db.models.functions import Now
expired_items = MyModel.objects.filter(
expiry_datetime__lte=Now()
)
active_items = MyModel.objects.filter(
Q(expiry_datetime=None) | Q(expiry_datetime__gt=Now())
)
【解决方案2】:
// monthIndex: start at 0
let boolTimeExpirationTime = Date.now() >= new Date(2021, 5, 10, 18, 0, 0)? false : true // new Date(year, monthIndex, day, hours, minutes, seconds)