0

I'm quite new to Django and Python, so maybe my Question might be stupid but..

I'm logging what users do on my page with Django-Activity-Stream.

And now I'm trying to build a page where I'll have a nice graph showing me what users did depending on the action and date.

So far so well, until now I did it with a raw sql query but since Django's not supposed to be used like this, I want to count actions filtered by the verb it's allocated to.

My raw query looks like:

cursor = connection.cursor()
cursor.execute("SELECT COUNT(id) FROM actstream_action WHERE verb = %s "
"AND '2018-06-01' <= timestamp AND '2018-06-30' >= timestamp", ['User created'])
row = cursor.fetchone()
return row[0]

I hope somebody could help me! Thanks in advance

jonafato
  • 1,595
  • 14
  • 21
Toni
  • 3
  • 3

1 Answers1

2

You could import the actstream.models.Action class and query on it.

For example, to get a queryset of all actions with the verb added new post that was generated between 20th and 24th September 2018, you could do this

import datetime
from actstream.models import Action

start = datetime.datetime(2018, 9, 20)
end = datetime.datetime(2018, 9, 24)
actions = Action.objects.filter(verb='added new post', timestamp__gt=start, timestamp__lt=end)
rimonmostafiz
  • 1,341
  • 1
  • 15
  • 33
Ayaz Hossain
  • 191
  • 7