python - 为模型查询集生成随机时间
问题描述
我正在尝试在 20 小时之间生成随机时间,现在,并将其分配给所有查询集传递 24 小时。
这是我做的:
from faker import Faker
fake = Faker()
from blogs.models import Post
from django.utils import timezone
import datetime
def rotate_time():
now = timezone.now()
day_pass = now - datetime.timedelta(hours=24)
qs = Post.objects.filter(created__lt=day_pass)
number = qs.count()
lst = []
for _ in range(number):
for t in [fake.date_time_between(start_date='-20h', end_date='now')]:
lst.append(t)
for i in lst:
print(i) # this work fin until now <==
x = 0
while x < len(lst):
time = i[x+1]
if qs.exists():
for item in qs:
item.pud_date_rotation = time
item.save()
TypeError:'datetime.datetime' 对象不可下标
解决方案
这里有几件事是错误的。
首先是导致错误的那个:i
不是datetime
列表或任何其他可下标类型。这就是i[x+1]
引发错误的原因。
其次,如果您尝试遍历查询集中的所有项目并给它们每个随机时间,为什么不只遍历查询集呢?
from faker import Faker
fake = Faker()
from blogs.models import Post
from django.utils import timezone
import datetime
def rotate_time():
now = timezone.now()
day_pass = now - datetime.timedelta(hours=24)
qs = Post.objects.filter(created__lt=day_pass)
for post in qs:
post.pud_date_rotation = fake.date_time_between(start_date='-20h', end_date='now')
post.save()
如果您想同时发布所有帖子,只需计算循环前的时间,如下所示:
def rotate_time():
now = timezone.now()
day_pass = now - datetime.timedelta(hours=24)
qs = Post.objects.filter(created__lt=day_pass)
time = fake.date_time_between(start_date='-20h', end_date='now')
for post in qs:
post.pud_date_rotation = time
post.save()
推荐阅读
- java - 配置多个数据源时发现 IllegalTransactionStateException Pre-bound JDBC Connection
- php - 路由参数包含斜杠和点在新服务器中无法识别
- lua - 脚本在几秒钟后停止
- android - 错误:com.google.android.gms.location.places.ui 包不存在
- sml - 使用参数化分隔符标记字符串
- typescript - 使用 allure 命令行工具在量角器中生成诱惑报告时出现 404 错误
- angularjs - 如何在 ASP.Net MVC 中用户注销后停止 angularjs 工作
- python - 为什么 QTableWidgetItem 不不断更新它的颜色?
- javascript - 在 MySQL 数据库中显示行的计数结果并在 ChartJs 中显示
- php - 以编程方式为 CLI 应用程序生成命名空间