Как увеличить поле класса модели с некоторой скоростью в Джанго? - PullRequest
0 голосов
/ 10 ноября 2019

Я создаю страницу продукта (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) и увеличения просмотров за прошедшие минуты, но, видимо, представления не увеличиваются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...