import time
class Stopwatch:
""" Counts passed seconds """
def __init__(self):
self.init_time = time.time()
self.seconds = 0
self.last_check = self.init_time
def checkseconds(self):
now = time.time()
count = int(now - self.last_check)
mod = now - self.last_check - count
self.seconds += count
self.last_check = now - mod
import time
def stopwatch():
""" Coroutine that returns number of seconds
passed after initialization
"""
# Initialization
init_time = time.time()
seconds = 0
last_check = init_time
# Main loop
while True:
now = yield seconds
count = int(now - last_check)
mod = now - last_check - count
seconds += count
last_check = now - mod
# Создаем сопрограмму
my_watcher = stopwatch()
# Не забываем про инициализацию (первый yield)
my_watcher.send(None)
# Остальные send будут возвращать количество пройденных
# после инициализации секунд
passed_seconds = my_watcher.send(time.time())
<...>
passed_seconds = my_watcher.send(time.time())
>>> s = 'abc<def*gh?ikl'
>>> s.translate(None, '\/:*?"<>|')
'abcdefghikl'
Person.objects.raw('SELECT * FROM myapp_person')
Вам же выше ответили, что в доке это всё есть. Или вам нужно чтоб за вас сделали? Ну вот на первый раз я за вас сделал, но вам должно быть стыдно. Добавьте к модели Forum:
groupobjectpermission = GenericRelation(GroupObjectPermissionBase,
content_type_field='content_type',
object_id_field='object_pk')
И тогда будет работать как вы и хотели - Forum.objects.filter(groupobjectpermission__permission__codename='view_forum')