Я создаю страницу продукта (10 продуктов) в Django, где мне нужно увеличить фиктивные просмотры во всех продуктах с некоторой скоростью.
Фиктивные просмотры (D) для любого продукта в течение данного дняD = N * Y * X
, где X для каждого продукта выбирается случайным образом уже для каждого продукта (также будет постоянным после этого), а Y выбирается случайным образом из набора каждый день для различных продуктов.
Так что в основном мне нужно увеличивать просмотры при каждом обновлении страницы и в результате D/24*60
даст нам увеличение просмотров в минуту.
Как именноЯ могу увеличить количество просмотров с определенной скоростью в минуту?
Models.py
class Products(models.Model):
title = models.CharField(max_length = 100)
description = models.TextField()
views = models.IntegerField(null = True)
image = models.ImageField(upload_to = 'productImages/')
dateUploaded = models.DateField(auto_now_add=True)
Daytimestamp = models.DateField(auto_now_add=True)
actualViews = models.IntegerField(null = True)
class Meta:
ordering = ['title']
class Views(models.Model):
X = ArrayField(models.IntegerField(blank = True))
Y = ArrayField(models.FloatField(blank= True))
Viewtimestamp = models.DateTimeField(auto_now_add=True)
Моя домашняя функция в views.py -
def home(request):
products = Products.objects.all()
views = Views.objects.all()
# caculate Days(N)
delta = (datetime.date.today()-products[0].dateUploaded)
if delta.days == 0:
Day = 1
else:
Day = delta.days + 1
# if next day then change Y
if datetime.date.today() != products[0].Daytimestamp:
makeY() #this function changes Y array
for product in products:
product.Daytimestamp = datetime.date.today()
product.save()
# give minutes passed since last update
delta = datetime.datetime.now(timezone.utc) - views[0].Viewtimestamp
print("Seconds passed", delta.seconds)
v0 = views[0]
v0.Viewtimestamp = datetime.datetime.now(timezone.utc)
v0.save()
minutes_passed = (delta.seconds)/60
for product in products:
DummyView = Day * views[0].X[product.id-1] * views[0].Y[product.id-1]
DummyViewPerMinute = (DummyView/(24*60))
product.views += (minutes_passed * DummyViewPerMinute)
product.save()
return render(request, '../templates/home.html', {'Products': products})
. Я сохраняюотслеживание отметки времени последнего обновления представлений (Viewtimestamp) и увеличения просмотров за прошедшие минуты, но, видимо, представления не увеличиваются.