首页 > 解决方案 > 如何在 Django 中以某种速度增加模型类字段?

问题描述

我正在 Django 中创建一个产品页面(10 个产品),其中我需要以某种速度增加所有产品中的虚拟视图。

在给定的一天 N 中任何产品的虚拟视图 (D) 是D = N * Y * X其中每个产品的 X 已经为每个产品随机选择(此后也将是恒定的),并且 Y 是每天从一组不同产品中随机抽取的。

所以基本上我需要增加每次刷新页面的浏览量,因此D/24*60,每分钟浏览量都会增加。

我究竟如何才能以每分钟的某种速度增加我的浏览量?

模型.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),并按分钟增加视图,但视图似乎没有增加。

标签: pythondjangodjango-views

解决方案


推荐阅读