def get_cache_or_query(cache_key, model, seconds_to_cache=900, **kwargs):
    '''
        Based on concept by Rudy Menendez.
        Gets the query from cache or returns the orm.
        
        Example: the_game = get_cache_or_query('game1', Game,
                            seconds_to_cache=60*24*5, id=1) # 5 day timeout
    '''
    from django.core.cache import cache
    
    q = cache.get(cache_key)
    if not q:
        q = model.objects.get(**kwargs)
        cache.set(cache_key, q, seconds_to_cache)
    return q
