我想要一个"active_in“属性作为时间框架。我假设DBMS是针对postgresql字段进行优化的,因此最好使用DateTimeRangeField而不是为start_date和end_date使用两个单独的字段。
为此,我希望为字段提供一个默认值。
active_in = models.DateTimeRangeField(default=timezone.now+'-'+timezone.now+10YEARS)我可能的解决方案:
使用字符串操作的代码:
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)发布于 2020-10-15 12:08:19
不需要字符串操作,因为这个字段的记录在案类型是DateTimeTZRange。
我不能说我以前用过这个领域,但是像这样的东西应该能起作用:
from psycopg2.extras import DateTimeTZRange
from django.utils import timezone
from datetime import timedelta
def next_ten_years():
now = timezone.now()
# use a more accurate version of "10 years" if you need it
return DateTimeTZRange(now, now + timedelta(days=3652))
class MyModel(models.Model):
...
active_in = models.DateTimeRangeField(default=next_ten_years)https://stackoverflow.com/questions/64362067
复制相似问题