相关疑难解决方法(0)

如何将Django模型字段的默认值设置为函数调用/可调用(例如,相对于模型对象创建时间的日期)

编辑:

如何将Django字段的默认设置为每次创建新模型对象时评估的函数?

我想做类似下面的事情,除了在这段代码中,代码被评估一次并将默认设置为创建的每个模型对象的相同日期,而不是每次创建模型对象时评估代码:

from datetime import datetime, timedelta
class MyModel(models.Model):
  # default to 1 day from now
  my_date = models.DateTimeField(default=datetime.now() + timedelta(days=1))
Run Code Online (Sandbox Code Playgroud)



原版的:

我想为函数参数创建一个默认值,使其成为动态的,并在每次调用函数时调用和设置.我怎样才能做到这一点?例如,

from datetime import datetime
def mydate(date=datetime.now()):
  print date

mydate() 
mydate() # prints the same thing as the previous call; but I want it to be a newer value
Run Code Online (Sandbox Code Playgroud)

具体来说,我想在Django中这样做,例如,

from datetime import datetime, timedelta
class MyModel(models.Model):
  # default to 1 day from now
  my_date = models.DateTimeField(default=datetime.now() + timedelta(days=1))
Run Code Online (Sandbox Code Playgroud)

django parameters lambda default django-models

88
推荐指数
4
解决办法
6万
查看次数

DJANGO 时区设置和 auto_now 结果不同

我已经设置了我的 django 并且我有一个 auto_now=True 的模型,因为我的 SQL 服务器时区已设置为“亚洲/上海”,所以我也想将 django 设置为这个时区。我已将其设置为 TIME_ZONE='Asia/Shanghai' 和 Use_TZ=True。

我检查了 datetime.datetime.now() 可以给我正确的时区时间。但是 django.utils.timezone.now() 时间仍然是 UTC 时间,如下面的 shell 输出所示。

我想这解释了为什么我的 auton_now 对象时区总是在 UTC 中。我打算在 models.py 中设置默认值以使用我的 datetime.datetime.now() 对象,但我对此有一个警告。

如何设置 settings.py 以便也可以正确设置 django.utils.timezone 对象?

>>> timezone.get_current_timezone()
<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>
>>> timezone.now()
datetime.datetime(2018, 1, 18, 10, 11, 0, 936572, tzinfo=<UTC>)
>>>
>>> datetime.datetime.now()
datetime.datetime(2018, 1, 18, 18, 20, 23, 722825)
Run Code Online (Sandbox Code Playgroud)

django

4
推荐指数
1
解决办法
2593
查看次数

标签 统计

django ×2

default ×1

django-models ×1

lambda ×1

parameters ×1