首页 > 解决方案 > 如何每天或根据日期自动在表中创建新行 django

问题描述

# modaly.py
class User(modals.Modal): name = models.CharField(max_length=30)

class Traffic(models.Model): my_user = models.ForeignKey(User, on_delete=models.CASCADE)  per_day_user_visit = models.PositiveIntegerField(null=True, blank=True) traffic_date = models.DateField(auto_created=True)
ID 我的用户 per_day_user_visit 交通日期
1 实例 500 用户访问 周一
2 实例 第512章 周二
# views.py
# Auto created a new row, when new day come
if newday:
    Traffic.objects.create(my_user = "1", per_day_user_visit = "512", date=datetime.now())

标签: pythonmysqldjangodjango-models

解决方案


如果您尝试在每次用户点击视图时增加访问量,我建议如下:

from django.utils import timezone
today = timezone.now().date()

traffic, created = Traffic.objects.get_or_create(
    my_user=1,
    date=today,
    defaults={"per_day_user_visit":0}
)

# Now do whatever you need with your traffic object, for example:
traffic.per_day_user_visit += 1
traffic.save()

⚠️ 如果您的用户非常活跃,您可能会遇到性能问题。

此外,在用户未访问的日子里,您不会有条目。get_or_create如评论中所建议的,如果您每天都需要一个条目,则可以通过 cron 或 celerybeat 以某种方式触发该部分。


推荐阅读