Python 冷冻枪不适用于django orm create_at字段
我正在尝试使用冷冻枪进行单元测试:Python 冷冻枪不适用于django orm create_at字段,python,python-2.7,django-orm,freezegun,Python,Python 2.7,Django Orm,Freezegun,我正在尝试使用冷冻枪进行单元测试: class Customer(models.Model): created_at = models.DateTimeField(default=datetime.now, null=True) from freezegun import freeze_time with freeze_time(datetime(2020, 9, 9, 9), tz_offset=9): customer =
class Customer(models.Model):
created_at = models.DateTimeField(default=datetime.now, null=True)
from freezegun import freeze_time
with freeze_time(datetime(2020, 9, 9, 9), tz_offset=9):
customer = Customer.objects.create()
print 'created at', customer.created_at
# prints: created at 2020-11-27 19:54:11.994688
因此,出于某种原因,冻结时间似乎对django orm不起作用。
我无法在我尝试测试的函数中执行Customer.objects.create(created_at=…)
如何使用冷冻枪正确设置创建的_
非常感谢。问题是您直接传递函数,因此当
冷冻枪
覆盖日期时间时。现在
属性对旧函数的引用没有影响
另一种方法是创建一个自定义函数,每次在该函数中检索属性:
def current_time():
return datetime.now()
class Customer(models.Model):
created_at = models.DateTimeField(default=current_time, null=True)
这也会将字段设置为默认情况下,它不会显示在
模型表单中
噢,哇,我在这个问题上花了这么长时间。。非常感谢你!(刚才给你买了一杯咖啡;D)谢谢你,威廉!
class Customer(models.Model):
created_at = models.DateTimeField(auto_now_add=True, null=True)