Reputation: 321
With a model like below, I want to return the number of times an object was retrieved today
class Watched(Stamping):
user = models.ForeignKey("User", null=True, blank=True, on_delete=models.CASCADE,
default=None)
count = models.PositiveIntegerField()
The Stamping
is another model with created_at
and updated_at
Below is the example of what I want to achieve
a = Watched.objects.filter("only_the_ones_retrieved_today")
for b in a:
return "b.count but only today's incremented values"
Upvotes: 2
Views: 224
Reputation: 59184
You can simply add a total_count
and a daily_count
column, then reset the daily_count
every day at midnight. For example:
class Watched(Stamping):
...
total_count = models.PositiveIntegerField(default=0)
daily_count = models.PositiveIntegerField(default=0)
...
Then increase both fields from your get_or_create()
handler.
You can then execute a piece of code every midnight that resets the daily_count
for all Watched
instances. I recommend you to write a custom django-admin command and run it via a cron job or similar:
Watched.objects.all().update(daily_count=0)
Upvotes: 1