- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经为数据库中的事件定义了一些时间戳作为 auto_now_add
,因为在存储事件的同时信息应该与它的时间戳一起存储。
事件的描述是这样的
class NewEvent(models.Model):
'''
Individual event
'''
name = models.CharField(max_length=100)
quantity = models.FloatField(null=True)
timestamp = models.DateTimeField(auto_now_add=True)
为了测试模块,我在 test.py
文件的数据库中生成一些信息,这样:
for event in EVENT_TYPES:
time = datetime.datetime.now() - datetime.timedelta(days=1)
for i in range(48):
time = time.replace(hour=i / 2)
NewEvent(name=event,
timestamp=time,
quantity=i).save()
我必须生成带有昨天时间戳的事件(然后模块将汇总它们)。问题是您无法覆盖时间戳。时间戳是事件产生时的时间戳,documentation说得很清楚。
那么,如何为测试生成具有适当时间戳的数据呢?我有几个想法:
_
if testing:
timestamp = models.DateTimeField(auto_now_add=True)
else:
timestamp = models.DateTimeField(auto_now_add=False)
或者也许有更简单的方法...有什么想法吗?
最佳答案
另一种处理方法是使用 QuerySet update
在创建实例之后,根据您的用例,这可能更有用。
当 update
调用在 SQL 级别执行时,它将跳过验证、信号和自定义保存功能。它将需要一个可能影响性能的辅助数据库调用,因此应谨慎使用。
for event in EVENT_TYPES:
time = datetime.datetime.now() - datetime.timedelta(days=1)
for i in range(48):
time = time.replace(hour=i / 2)
instance = NewEvent(name=event, quantity=i).save()
NewEvent.objects.filter(pk=instance.pk).update(timestamp=time)
关于python - 为单元测试覆盖 auto_now,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2273463/
我有以下型号: class MetaData(models.Model): created_at = models.DateTimeField(auto_now_add=True, auto_
我已经为数据库中的事件定义了一些时间戳作为 auto_now_add,因为在存储事件的同时信息应该与它的时间戳一起存储。 事件的描述是这样的 class NewEvent(models.Model):
我已经设置了我的 django 并且我有一个 auto_now=True 的模型,因为我的 SQL 服务器时区已设置为“亚洲/上海”,所以我也想将 django 设置为这个时区。我已将其设置为 TIM
总的来说,我对 django 和 python 非常陌生,我正在尝试学习rest_framework 来创建 RESTful API。 所以我有一个这样的模型: class Listing(model
我想在保存记录时更新相关模型的时间戳。这是我的模型: class Issue(models.Model): issueTitle = models.CharField() issueD
我有这样一个模型: class FooBar(models.Model): createtime = models.DateTimeField(auto_now_add=True) l
我有一个模型,如下所示: name = models.CharField(max_length=255) modify_time = models.DateTimeField(auto
我正在使用 Django 2.0。 我有一个像这样的模型 class MyModel(models.Model): update_new = models.CharField(blank=Tr
我正在使用 Django 2.0。 我有一个像这样的模型 class MyModel(models.Model): update_new = models.CharField(blank=Tr
我使用last_touch_date DateTimeProperty 作为使用auto_now=True 标志修改应用程序数据存储中的实体的方法。当用户发布实体时,它会收到其last_touch_d
我在Django 模型字段的属性中理解的是 auto_now - 每次调用 Model.save() 时将字段值更新为当前时间和日期。 auto_now_add - 使用创建记录的时间和日期更新值。
对于 Django 1.1。 我的 models.py 中有这个: class User(models.Model): created = models.DateTimeField(auto_
我一直在尝试调试为什么我的几个模型中的 last_updated 字段在执行例如 model.objects.filter(**lookups).update(**defaults) 时没有被更新。例
我有一个 Comment模型。它具有以下时间戳字段: created = models.DateTimeField(auto_now_add=True, blank=True, null=True)
模型定义: class Footprint(models.Model) date = models.DateTimeField(auto_now = True) class Stuff(Footp
我正在使用 Django,但在使用 Django 模型的 Python 脚本时遇到问题我正在使用的脚本从 api 获取数据并将其加载到我的数据库中。 我的模型: class Movie(models.
我有两个模型:消息和附件。每个附件都附加到特定的消息,使用附件模型上的 ForeignKey。两种模型都有一个名为 updated 的 auto_now DateTimeField。我试图做到这一点,
我正在尝试做 django api。 在 models.py 中 class Receipt(models.Model): id=models.AutoField(primary_key=Tr
我使用的是 Django 2.1.5。 有一个带有“auto_now”字段的模型: class BaseModel(models.Model): id = models.UUIDField(d
我需要系统中的每个日期时间都采用 UTC 时间。如果我使用 auto_now,如何确保它将 tzinfo 设置为 UTC 的 python datetime?我想创建一个字段如下: class MyT
我是一名优秀的程序员,十分优秀!