{{{
class SomeQuerySet(models.QuerySet):
def active(self):
print('active')
data = cache.get(CACHE_KEY)
if data is None:
print('no cache')
data =
self.select_related('related').filter(date_expired__gte=timezone.localtime().now()).filter(
some__is_active=True).order_by('-date_activated')
cache.set(CACHE_KEY, data, 30)
return data
}}}
{{{
class QSSomeListView(ListView):
queryset = Some.objects.active()
}}}
{{{
class GetQSSomeListView(ListView):
def get_queryset(self):
return Some.objects.active()
}}}
QSSomeListView never print anything from `active()` method on page access,
and actually never hit cache. It print only `active` once at project
startup.
GetQSSomeListView works as expected.
If its intentional, could you please explain / point me why so?
Thank you.
--
Ticket URL: <https://code.djangoproject.com/ticket/30713>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* status: new => closed
* resolution: => invalid
Comment:
Please don't use the issue tracker as a secondary support channel. See
TicketClosingReasons/UseSupportChannels.
--
Ticket URL: <https://code.djangoproject.com/ticket/30713#comment:1>
* status: closed => new
* resolution: invalid =>
Comment:
Carlton, so you are telling this behaviour is not a bug?
It's not support question, if so I would use stack overflow instead.
Thanks
--
Ticket URL: <https://code.djangoproject.com/ticket/30713#comment:2>
* status: new => closed
* resolution: => invalid
Comment:
No, it's not a bug in Django. It's related to your `active()` method not
being lazily evaluated. Please follow Carlton's advice.
--
Ticket URL: <https://code.djangoproject.com/ticket/30713#comment:3>
Comment (by Dmitrij Strelnikov):
thank you Claude, this was the thing I need to hear
have a great day
--
Ticket URL: <https://code.djangoproject.com/ticket/30713#comment:4>