python - 如何每天或根据日期自动在表中创建新行 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())
解决方案
如果您尝试在每次用户点击视图时增加访问量,我建议如下:
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 以某种方式触发该部分。
推荐阅读
- python - SQLite DateTime 类型只接受 Python 日期时间
- javascript - 通过 rdflib.js 查询 Project Gutenberg catalog.rdf
- ajax - asp.net核心ajax获取
- python - 在 Pandas DataFrame(时间序列)的列中查找具有不同值的所有行
- python-2.7 - PySpark 使用统计信息写入 Parquet 二进制列 (signed-min-max.enabled)
- mongodb - MongoDB - 仅当它们是连续的时才对具有匹配字段的记录进行分组/聚合,按时间排序
- sql - SQL中按月获取所有记录
- sonarqube - SonarQube 显示登录消息
- java - Java 1.8.0_192 的 JavaFX 日志记录
- java - 有什么方法可以让这个简单的程序更有效率吗?