【发布时间】:2021-01-29 09:02:30
【问题描述】:
我想要一个“active_in”属性作为时间范围。我假设 DBMS 针对 postgresql tsrange 字段进行了优化,因此最好使用 DateTimeRangeField 而不是 start_date 和 end_date 的 2 个单独字段。
这样做我希望该字段有一个默认值。
active_in = models.DateTimeRangeField(default=timezone.now+'-'+timezone.now+10YEARS)
- 我对 DateTimeRangeField 性能的假设是否属实?
- 是否有一个聪明的解决方案是创建一个新的;函数、类或 只是操纵倒数第二位?
我可能的解决方案:
使用字符串操作的代码:
active_in = models.DateTimeRangeField(default=timezone.now+'-'+timezone.now[:-2]+'30')
使用自定义函数对象的代码:(从这里调整:https://stackoverflow.com/a/27491426/7458018)
def today_years_ahead():
return timezone.now + '-' timezone.now() + timezone.timedelta(years=10)
class MyModel(models.Model):
...
active_in = models.DateTimeRangeField(default=today_years_ahead)
【问题讨论】:
标签: django postgresql django-models