我尝试在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”对象不可订阅
发生此错误的原因是您试图访问datetime对象:
但是datetime对象的
list
在代码中被称为lst
。也许你是说例如,我建议重命名变量,以便在读取它们时看到它们是什么。此外,没有停止条件(将永远运行)。我建议如下:
在这段代码中
您放置了
time = i[x+1]
,但i
是一个日期时间对象而不是列表,因此没有索引。这是导致错误的原因我想你是想把
time = lst[x+1]
给你
旁注:您的
while
循环将永远运行,因为在它的任何地方都不会增加x
的值。您的代码可能需要一些重构这里有几件事不对
首先,导致错误的是:
i
是datetime
而不是列表或任何其他可下标类型。这就是i[x+1]
抛出错误的原因第二,如果您试图迭代queryset中的所有项,并给每个项一个随机时间,为什么不直接迭代queryset呢
如果要同时发布所有帖子,只需计算循环之前的时间,如下所示:
相关问题 更多 >
编程相关推荐