LEGO Pokémon is arguably the most hyped thing in the LEGO-sphere for quite a while. It was big news that LEGO took over the license from rival Mega Construx (formerly Mega Bloks). Mega's Pokémon sets were pretty well received by fans and, compared to almost every other licensed theme made by Mega over the years, were actually pretty good looking. So the bar was high for LEGO to create some great sets to set them apart from what the fans already could get. Especially considering LEGO's higher price point.
Over the last decade Mega Construx released about 150 sets featuring around 130 different Pokémon. I was going to list all the available Pokémon for you but the list got so long it wasn't useful and so I stopped. They released small scale versions regularly in a kind of CMF type series, where the Pokémon came in a Poké ball container. Then they made larger scale sets akin to LEGO's SMART Play play-scale sets. Then they had larger display scale sets similar in style to the first LEGO sets they announced first. One in particular is a Pikachu set which was compared to LEGO's version upon release, with LEGO's version receiving some ridicule for not looking as good, and anger for being so much more expensive. Whilst I find most criticism to be unfair I do agree LEGO's Pikachu looks like he's trying to join the Ninja Turtles.
Enough talking about what building brick Pokémon was, let's look at what it is now. As I said above LEGO have taken the approach of having some play-scale sets for the kiddos, and some massively sized (part count and price tag wise) adult display level sets.
Icedragonj reviewed the impressive, and huge, 72153-1 - Venusaur, Charizard and Blastoise a few months ago, but the Summer wave of sets gave us the SMART Play scale sets. I reviewed a lot of Star Wars SMART Play sets and was impressed with what SMART Play could offer, but mildly disappointed by what it was currently offering. But I'm sure most people reading this know, SMART Play has not had a great welcome by LEGO fans. I think it's been treated unfairly. I'm keen to see if SMART Play has been more successful here than in the Star Wars sets. Fingers crossed!
The Set
Adventure awaits with SMART Play™: Mewtwo’s Lab Break (72163), a LEGO® Pokémon™ toy building set where the Legendary Mewtwo uses psychic power to destroy the lab monitor and escape from the tank it was created in. The dynamic set features a dial which, when turned, breaks open the chamber and frees an articulated Mewtwo figure with posable legs, arms, hands, head and tail. A Master Ball is also included for the Trainer to catch any Pokémon. The Mewtwo building toy incorporates a SMART Tag. SMART Bricks found in All-In-One Sets (sold separately) bring Pokémon Trainer adventures to life with immersive interactive play possibilities, enabling Pokémon and other play pieces to react with sounds, lights and more as kids move the Pokémon around. Transform any kid’s room into a champion’s retreat and inspire endless imaginative play with this action-packed Pokémon gift. Set contains 605 pieces.
...from LEGO.com
The Box
The box measured 265mm x 380mm x 70mm. Inside are 6 bags, 5 numbered 1 to 5 and 1 unnumbered, a sticker sheet, and 2 instruction manuals.
The Instructions
The instruction manuals measure:
BI 1 - 195mm x 175mm, has 84 pages and approximately 119 total build steps.
BI 2 - 195mm x 175mm, has 100 pages and approximately 108 total build steps.
The pdf of the instructions are available for download here.
The Parts
The set contains 605 parts and 19 spares, in 23 colors, and 36 part categories, with a total of 218 unique parts/color combinations.
For those uninitiated, in Pokémon Red, Blue, and Yellow, you get one Master Poke Ball. Hopefully you don't waste is catching a Caterpie because Mewtwo is almost impossible to catch without it.
Mewtwo's torso is tight, utilizing all the new slopes to keep the build thin but strong enough. The belly hides the new 2x2 plate with cut-outs and the SMART tile. The new plates seem to exist to make it easier to remove the belly section to replace with a SMART Brick.
Bag 2
The legs rotate 360 degrees and look great. They are surprisingly strong too but require a Trans-clear round brick to help.
Bag 3
When my son first saw the tail his exact words were "I think LEGO have gone too exotic for his tail" which gave me a chuckle. I get what he's saying though, it's huge and looks even bigger when attached to Mewtwo. The arms are very basic but have elbow joints. The head looks great but once the connector parts on the back are in place it has limited articulation.
Bag 4
With Mewtwo done the base is next. This base recreates the stasis tank from Mewtwo Strikes Back's opening where we first see Mewtwo. It features a neat but simple mechanic where you can break Mewtwo free.
Bag 5
The finished tank is a little underwhelming to be honest. It's pretty flimsy and for those wanting to display the Pokémon I don't think it adds much to Mewtwo. But I get the need for LEGO to make it a bit more than just a buildable Pokémon.
Conclusion
A solid Pokémon set. No real complaints except for the slight underwhelming stasis tank. It's not bad and adds to the play it's just not awesome.
So how was the SMART Play? Well here's where I am disappointed. Mewtwo is a lone Pokémon. Sticking in the brick makes some noises when I shake him around, and it lights up, but without another Pokémon that seems to be it. Which is just kinda sucky. When he is hit the brick glows red and he grunts. If you are hoping to hear what a Mewtwo x Darth Vader crossover sounds like unfortunately the things don't seem to be allowed to interact at the same time. With Vader attached he still only made Mewtwo noises.
Is Mewtwo worth catching? If you're already a Pokéfan absolutely. This Pokémon is a must in your Pokédex. Otherwise, you could probably skip it. If you're looking for a Pokémon sets for your niece there's probably better options with multiple Pokémon that are more fun.
default
1067.86 ms (50 queries
including 35 similar
and 10 duplicates
)
Query
Timeline
Time (ms)
Action
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector" FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 980) LIMIT 21SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 980) LIMIT 21
9 similar queries.
0.51
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(119)
article = get_object_or_404(Article, id=article_id)
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector", (SIMILARITY("blog_article"."title", 'Review: 72163-1 - Mewtwo''s Lab Break') + SIMILARITY("blog_article"."body", 'Pokémon sets with SMART bricks? I''m all in. But will I eventually have to buy 1,025 sets to catch ''em all? I hope not.
Contents:
The SetThe BoxThe Instructions
The PartsThe BuildConclusion
Background
LEGO Pokémon is arguably the most hyped thing in the LEGO-sphere for quite a while. It was big news that LEGO took over the license from rival Mega Construx (formerly Mega Bloks). Mega''s Pokémon sets were pretty well received by fans and, compared to almost every other licensed theme made by Mega over the years, were actually pretty good looking. So the bar was high for LEGO to create some great sets to set them apart from what the fans already could get. Especially considering LEGO''s higher price point.
Over the last decade Mega Construx released about 150 sets featuring around 130 different Pokémon. I was going to list all the available Pokémon for you but the list got so long it wasn''t useful and so I stopped. They released small scale versions regularly in a kind of CMF type series, where the Pokémon came in a Poké ball container. Then they made larger scale sets akin to LEGO''s SMART Play play-scale sets. Then they had larger display scale sets similar in style to the first LEGO sets they announced first. One in particular is a Pikachu set which was compared to LEGO''s version upon release, with LEGO''s version receiving some ridicule for not looking as good, and anger for being so much more expensive. Whilst I find most criticism to be unfair I do agree LEGO''s Pikachu looks like he''s trying to join the Ninja Turtles.
Enough talking about what building brick Pokémon was, let''s look at what it is now. As I said above LEGO have taken the approach of having some play-scale sets for the kiddos, and some massively sized (part count and price tag wise) adult display level sets.
Icedragonj reviewed the impressive, and huge, 72153-1 - Venusaur, Charizard and Blastoise a few months ago, but the Summer wave of sets gave us the SMART Play scale sets. I reviewed a lot of Star Wars SMART Play sets and was impressed with what SMART Play could offer, but mildly disappointed by what it was currently offering. But I''m sure most people reading this know, SMART Play has not had a great welcome by LEGO fans. I think it''s been treated unfairly. I''m keen to see if SMART Play has been more successful here than in the Star Wars sets. Fingers crossed!
The Set
Adventure awaits with SMART Play™: Mewtwo’s Lab Break (72163), a LEGO® Pokémon™ toy building set where the Legendary Mewtwo uses psychic power to destroy the lab monitor and escape from the tank it was created in. The dynamic set features a dial which, when turned, breaks open the chamber and frees an articulated Mewtwo figure with posable legs, arms, hands, head and tail. A Master Ball is also included for the Trainer to catch any Pokémon. The Mewtwo building toy incorporates a SMART Tag. SMART Bricks found in All-In-One Sets (sold separately) bring Pokémon Trainer adventures to life with immersive interactive play possibilities, enabling Pokémon and other play pieces to react with sounds, lights and more as kids move the Pokémon around. Transform any kid’s room into a champion’s retreat and inspire endless imaginative play with this action-packed Pokémon gift. Set contains 605 pieces.
...from LEGO.com
The Box
The box measured 265mm x 380mm x 70mm. Inside are 6 bags, 5 numbered 1 to 5 and 1 unnumbered, a sticker sheet, and 2 instruction manuals.
The Instructions
The instruction manuals measure:
BI 1 - 195mm x 175mm, has 84 pages and approximately 119 total build steps.
BI 2 - 195mm x 175mm, has 100 pages and approximately 108 total build steps.
The pdf of the instructions are available for download here.
The Parts
The set contains 605 parts and 19 spares, in 23 colors, and 36 part categories, with a total of 218 unique parts/color combinations.Main colors are:
White: 69 unique parts, 228 quantity.
Light Bluish Gray: 38 unique parts, 137 quantity.
Dark Bluish Gray: 26 unique parts, 59 quantity.
Main categories are:
Plates Special: 29 unique parts, 85 quantity.
Plates')) AS "similarity", "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "blog_article" LEFT OUTER JOIN "auth_user" ON ("blog_article"."author_id" = "auth_user"."id") WHERE ("blog_article"."is_active" AND "blog_article"."published_date" > '2023-11-16T23:51:01.563261+00:00'::timestamptz ANDNOT ("blog_article"."id" = 980)) ORDER BY 19 DESC, "blog_article"."published_date" DESC LIMIT 20SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector", (SIMILARITY("blog_article"."title", 'Review: 72163-1 - Mewtwo''s Lab Break') + SIMILARITY("blog_article"."body", 'Pokémon sets with SMART bricks? I''m all in. But will I eventually have to buy 1,025 sets to catch ''em all? I hope not.
Contents:
The SetThe BoxThe Instructions
The PartsThe BuildConclusion
Background
LEGO Pokémon is arguably the most hyped thing in the LEGO-sphere for quite a while. It was big news that LEGO took over the license from rival Mega Construx (formerly Mega Bloks). Mega''s Pokémon sets were pretty well received by fans and, compared to almost every other licensed theme made by Mega over the years, were actually pretty good looking. So the bar was high for LEGO to create some great sets to set them apart from what the fans already could get. Especially considering LEGO''s higher price point.
Over the last decade Mega Construx released about 150 sets featuring around 130 different Pokémon. I was going to list all the available Pokémon for you but the list got so long it wasn''t useful and so I stopped. They released small scale versions regularly in a kind of CMF type series, where the Pokémon came in a Poké ball container. Then they made larger scale sets akin to LEGO''s SMART Play play-scale sets. Then they had larger display scale sets similar in style to the first LEGO sets they announced first. One in particular is a Pikachu set which was compared to LEGO''s version upon release, with LEGO''s version receiving some ridicule for not looking as good, and anger for being so much more expensive. Whilst I find most criticism to be unfair I do agree LEGO''s Pikachu looks like he''s trying to join the Ninja Turtles.
Enough talking about what building brick Pokémon was, let''s look at what it is now. As I said above LEGO have taken the approach of having some play-scale sets for the kiddos, and some massively sized (part count and price tag wise) adult display level sets.
Icedragonj reviewed the impressive, and huge, 72153-1 - Venusaur, Charizard and Blastoise a few months ago, but the Summer wave of sets gave us the SMART Play scale sets. I reviewed a lot of Star Wars SMART Play sets and was impressed with what SMART Play could offer, but mildly disappointed by what it was currently offering. But I''m sure most people reading this know, SMART Play has not had a great welcome by LEGO fans. I think it''s been treated unfairly. I''m keen to see if SMART Play has been more successful here than in the Star Wars sets. Fingers crossed!
The Set
Adventure awaits with SMART Play™: Mewtwo’s Lab Break (72163), a LEGO® Pokémon™ toy building set where the Legendary Mewtwo uses psychic power to destroy the lab monitor and escape from the tank it was created in. The dynamic set features a dial which, when turned, breaks open the chamber and frees an articulated Mewtwo figure with posable legs, arms, hands, head and tail. A Master Ball is also included for the Trainer to catch any Pokémon. The Mewtwo building toy incorporates a SMART Tag. SMART Bricks found in All-In-One Sets (sold separately) bring Pokémon Trainer adventures to life with immersive interactive play possibilities, enabling Pokémon and other play pieces to react with sounds, lights and more as kids move the Pokémon around. Transform any kid’s room into a champion’s retreat and inspire endless imaginative play with this action-packed Pokémon gift. Set contains 605 pieces.
...from LEGO.com
The Box
The box measured 265mm x 380mm x 70mm. Inside are 6 bags, 5 numbered 1 to 5 and 1 unnumbered, a sticker sheet, and 2 instruction manuals.
The Instructions
The instruction manuals measure:
BI 1 - 195mm x 175mm, has 84 pages and approximately 119 total build steps.
BI 2 - 195mm x 175mm, has 100 pages and approximately 108 total build steps.
The pdf of the instructions are available for download here.
The Parts
The set contains 605 parts and 19 spares, in 23 colors, and 36 part categories, with a total of 218 unique parts/color combinations.Main colors are:
White: 69 unique parts, 228 quantity.
Light Bluish Gray: 38 unique parts, 137 quantity.
Dark Bluish Gray: 26 unique parts, 59 quantity.
Main categories are:
Plates Special: 29 unique parts, 85 quantity.
Plates')) AS "similarity", "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "blog_article" LEFT OUTER JOIN "auth_user" ON ("blog_article"."author_id" = "auth_user"."id") WHERE ("blog_article"."is_active" AND "blog_article"."published_date" > '2023-11-16T23:51:01.563261+00:00'::timestamptz ANDNOT ("blog_article"."id" = 980)) ORDER BY 19 DESC, "blog_article"."published_date" DESCLIMIT 20
913.32
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(148)
related_articles = article.get_related_articles(num_sidebar_posts)/home/nathan/rb/site/./cache/utils.py in cache_wrapper(98)
result = method(instance, *args, **kwargs)/home/nathan/rb/site/./blog/models.py in get_related_articles(289)
return list(Article.objects.select_related('author').filter(published_date__gt=timezone.now()-timedelta(days=365*3)).annotate(similarity=TrigramSimilarity('title', self.title)+TrigramSimilarity('body', body)).exclude(id=self.id).order_by('-similarity', '-published_date')[:num])
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector", "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "blog_article" LEFT OUTER JOIN "auth_user" ON ("blog_article"."author_id" = "auth_user"."id") LEFT OUTER JOIN "blog_articlestats" ON ("blog_article"."id" = "blog_articlestats"."article_id") WHERE ("blog_article"."is_active" AND "blog_article"."published_date" > '2025-11-15T23:51:02.491205+00:00'::timestamptz) ORDER BY "blog_articlestats"."hits" DESC LIMIT 20SELECT ••• FROM "blog_article" LEFT OUTER JOIN "auth_user" ON ("blog_article"."author_id" = "auth_user"."id") LEFT OUTER JOIN "blog_articlestats" ON ("blog_article"."id" = "blog_articlestats"."article_id") WHERE ("blog_article"."is_active" AND "blog_article"."published_date" > '2025-11-15T23:51:02.491205+00:00'::timestamptz) ORDER BY "blog_articlestats"."hits" DESCLIMIT 20
3.14
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(149)
popular_articles = Article.get_popular_articles(num_sidebar_posts)/home/nathan/rb/site/./cache/utils.py in cache_wrapper(101)
caches[cache_key].set(method_key, result, seconds)/home/nathan/venv_rb310/lib/python3.10/site-packages/pymemcache/client/hash.py in set(344)
return self._run_cmd("set", key, False, *args, **kwargs)/home/nathan/venv_rb310/lib/python3.10/site-packages/pymemcache/client/hash.py in _run_cmd(322)
return self._safely_run_func(client, func, default_val, *args, **kwargs)/home/nathan/venv_rb310/lib/python3.10/site-packages/pymemcache/client/hash.py in _safely_run_func(211)
result = func(*args, **kwargs)/home/nathan/venv_rb310/lib/python3.10/site-packages/pymemcache/client/base.py in set(1424)
return client.set(key, value, expire=expire, noreply=noreply, flags=flags)/home/nathan/venv_rb310/lib/python3.10/site-packages/pymemcache/client/base.py in set(475)
return self._store_cmd(b"set", {key: value}, expire, noreply, flags=flags)[key]/home/nathan/venv_rb310/lib/python3.10/site-packages/pymemcache/client/base.py in _store_cmd(1196)
data, data_flags = self.serde.serialize(key, data)/home/nathan/venv_rb310/lib/python3.10/site-packages/pymemcache/serde.py in serialize(119)
return self._serialize_func(key, value)/home/nathan/venv_rb310/lib/python3.10/site-packages/pymemcache/serde.py in _python_memcache_serializer(58)
pickler.dump(value)
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector" FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 646) LIMIT 21SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 646) LIMIT 21
9 similar queries.
0.24
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(50)
{'name': 'Designer Spotlights', 'tag': 'designer-spotlight', 'article': Article.objects.get(id=646)},
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector" FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 720) LIMIT 21SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 720) LIMIT 21
9 similar queries.
0.29
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(51)
{'name': 'New Set Releases', 'tag': 'sets', 'article': Article.objects.get(id=720)},
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector" FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 605) LIMIT 21SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 605) LIMIT 21
9 similar queries.
0.17
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(52)
{'name': 'Into the Archives', 'tag': 'into-the-archives', 'article': Article.objects.get(id=605)},
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector" FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 705) LIMIT 21SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 705) LIMIT 21
9 similar queries.
0.24
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(53)
{'name': 'Mini MOC Madness', 'tag': 'mini-moc-madness', 'article': Article.objects.get(id=705)},
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector" FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 616) LIMIT 21SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 616) LIMIT 21
9 similar queries.
0.22
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(54)
{'name': 'Is This LEGO?', 'tag': 'is-this-lego', 'article': Article.objects.get(id=616)},
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector" FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 462) LIMIT 21SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 462) LIMIT 21
9 similar queries.
0.20
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(55)
{'name': 'Tips & Useful Info', 'tag': 'tips', 'article': Article.objects.get(id=462)},
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector" FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 279) LIMIT 21SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 279) LIMIT 21
9 similar queries.
0.17
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(56)
{'name': 'Rebricksberg', 'tag': 'rebricksberg', 'article': Article.objects.get(id=279)},
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector" FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 249) LIMIT 21SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 249) LIMIT 21
9 similar queries.
0.13
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(57)
{'name': 'The Good, The Bad, & The Ugly', 'tag': 'good-bad-ugly', 'article': Article.objects.get(id=249)},
SELECT COUNT(*) AS "__count" FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('designer-spotlight'))SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('designer-spotlight'))
8 similar queries.
2.44
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(60)
s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()
SELECT COUNT(*) AS "__count" FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('sets'))SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('sets'))
8 similar queries.
2.18
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(60)
s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()
SELECT COUNT(*) AS "__count" FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('into-the-archives'))SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('into-the-archives'))
8 similar queries.
2.18
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(60)
s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()
SELECT COUNT(*) AS "__count" FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('mini-moc-madness'))SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('mini-moc-madness'))
8 similar queries.
2.17
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(60)
s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()
SELECT COUNT(*) AS "__count" FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('is-this-lego'))SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('is-this-lego'))
8 similar queries.
2.23
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(60)
s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()
SELECT COUNT(*) AS "__count" FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('tips'))SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('tips'))
8 similar queries.
2.21
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(60)
s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()
SELECT COUNT(*) AS "__count" FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('rebricksberg'))SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('rebricksberg'))
8 similar queries.
2.16
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(60)
s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()
SELECT COUNT(*) AS "__count" FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('good-bad-ugly'))SELECT ••• FROM "blog_article" INNER JOIN "taggit_taggeditem" ON ("blog_article"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE ("blog_article"."is_active" AND UPPER("taggit_tag"."slug"::text) = UPPER('good-bad-ugly'))
8 similar queries.
2.14
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(150)
article_series_images = get_series()/home/nathan/rb/site/./blog/views.py in get_series(60)
s['num_posts'] = Article.objects.filter(tags__slug__iexact=s['tag']).count()
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector" FROM "blog_article" WHERE ("blog_article"."is_active" AND (("blog_article"."published_date" = '2026-10-27T00:00:00.075618+00:00'::timestamptz AND "blog_article"."id" > 980) OR "blog_article"."published_date" > '2026-10-27T00:00:00.075618+00:00'::timestamptz)) ORDER BY "blog_article"."published_date" ASC, "blog_article"."id" ASC LIMIT 1SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND (("blog_article"."published_date" = '2026-10-27T00:00:00.075618+00:00'::timestamptz AND "blog_article"."id" > 980) OR "blog_article"."published_date" > '2026-10-27T00:00:00.075618+00:00'::timestamptz)) ORDER BY "blog_article"."published_date" ASC, "blog_article"."id" ASCLIMIT 1
0.30
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(155)
article.next = Article.get_next_by_published_date(article)/usr/lib/python3.10/functools.py in _method(388)
return self.func(cls_or_self, *self.args, *args, **keywords)
SELECT "blog_article"."id", "blog_article"."title", "blog_article"."author_id", "blog_article"."published_date", "blog_article"."is_active", "blog_article"."body", "blog_article"."meta_description", "blog_article"."meta_img", "blog_article"."slug", "blog_article"."category_id", "blog_article"."ads", "blog_article"."show_ads_for_set_num", "blog_article"."review_for_set_num", "blog_article"."status", "blog_article"."scheduled_net", "blog_article"."ready_for_review_date", "blog_article"."is_sensitive", "blog_article"."search_vector" FROM "blog_article" WHERE ("blog_article"."is_active" AND (("blog_article"."published_date" = '2026-10-27T00:00:00.075618+00:00'::timestamptz AND "blog_article"."id" < 980) OR "blog_article"."published_date" < '2026-10-27T00:00:00.075618+00:00'::timestamptz)) ORDER BY "blog_article"."published_date" DESC, "blog_article"."id" DESC LIMIT 1SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND (("blog_article"."published_date" = '2026-10-27T00:00:00.075618+00:00'::timestamptz AND "blog_article"."id" < 980) OR "blog_article"."published_date" < '2026-10-27T00:00:00.075618+00:00'::timestamptz)) ORDER BY "blog_article"."published_date" DESC, "blog_article"."id" DESCLIMIT 1
0.47
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(159)
article.prev = Article.get_previous_by_published_date(article)/usr/lib/python3.10/functools.py in _method(388)
return self.func(cls_or_self, *self.args, *args, **keywords)
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(190)
context['reviewed_sets'] = article.get_reviewed_sets/home/nathan/rb/site/./blog/models.py in get_reviewed_sets(146)
sets.append(BaseSet.all_objects.get(set_num=sn))
SELECT "lego_baseset"."id", "lego_baseset"."set_num", "lego_baseset"."name", "lego_baseset"."year", "lego_baseset"."theme_id", "lego_baseset"."set_type", "lego_baseset"."num_parts", "lego_baseset"."default_inventory_id", "lego_baseset"."is_active", "lego_baseset"."is_accessory", "lego_baseset"."added_dt", "lego_baseset"."added_by_id", "lego_baseset"."last_modified_dt", "lego_baseset"."last_modified_by_id", "lego_baseset"."active_change_dt", "lego_baseset"."active_change_by_id", "lego_baseset"."last_checked_for_bi", "lego_baseset"."descr", "lego_baseset"."primary_photo_id", "lego_baseset"."primary_moc_image_id", "lego_baseset"."is_gear", "lego_baseset"."is_book", "lego_baseset"."search_vector", "lego_baseset"."mfhash_vector", "lego_set"."baseset_ptr_id", "lego_set"."start_date", "lego_set"."end_date", "lego_theme"."id", "lego_theme"."parent_id", "lego_theme"."name", "lego_theme"."slug", "lego_theme"."set_count", "lego_theme"."t1_id", "lego_theme"."t1_name", "lego_theme"."t2_name", "lego_theme"."t3_name", "lego_theme"."lego_blurb", "lego_theme"."banner_img", "lego_theme"."descr", T4."id", T4."parent_id", T4."name", T4."slug", T4."set_count", T4."t1_id", T4."t1_name", T4."t2_name", T4."t3_name", T4."lego_blurb", T4."banner_img", T4."descr", T5."id", T5."parent_id", T5."name", T5."slug", T5."set_count", T5."t1_id", T5."t1_name", T5."t2_name", T5."t3_name", T5."lego_blurb", T5."banner_img", T5."descr", "lego_setstatstotal"."set_id", "lego_setstatstotal"."hits", "lego_setstatstotal"."builds", "lego_setstatstotal"."likes", "lego_setstatstotal"."bi_downloads", "lego_setstatstotal"."featured_hits", "lego_setstatstotal"."user_hits" FROM "lego_set" INNER JOIN "lego_baseset" ON ("lego_set"."baseset_ptr_id" = "lego_baseset"."id") INNER JOIN "lego_theme" ON ("lego_baseset"."theme_id" = "lego_theme"."id") LEFT OUTER JOIN "lego_theme" T4 ON ("lego_theme"."parent_id" = T4."id") LEFT OUTER JOIN "lego_theme" T5 ON (T4."parent_id" = T5."id") LEFT OUTER JOIN "lego_setstatstotal" ON ("lego_baseset"."id" = "lego_setstatstotal"."set_id") WHERE ("lego_baseset"."is_active" AND "lego_baseset"."set_num" = '72163-1') LIMIT 21SELECT ••• FROM "lego_set" INNER JOIN "lego_baseset" ON ("lego_set"."baseset_ptr_id" = "lego_baseset"."id") INNER JOIN "lego_theme" ON ("lego_baseset"."theme_id" = "lego_theme"."id") LEFT OUTER JOIN "lego_theme" T4 ON ("lego_theme"."parent_id" = T4."id") LEFT OUTER JOIN "lego_theme" T5 ON (T4."parent_id" = T5."id") LEFT OUTER JOIN "lego_setstatstotal" ON ("lego_baseset"."id" = "lego_setstatstotal"."set_id") WHERE ("lego_baseset"."is_active" AND "lego_baseset"."set_num" = '72163-1') LIMIT 21
0.70
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(203)
context['lego_affiliate_links'] = get_lego_affiliate_links(article.show_ads_for_set_num_short)/home/nathan/rb/site/./lego/buy/sets.py in get_lego_affiliate_links(464)
set = get_or_none(Set.objects, set_num=set_num + '-1')/home/nathan/rb/site/./rb/utils.py in get_or_none(734)
return manager.get(**kwargs)
SELECTDISTINCT ("taggit_taggeditem"."object_id") AS "_prefetch_related_val", "taggit_tag"."id", "taggit_tag"."name", "taggit_tag"."slug" FROM "taggit_tag" INNER JOIN "taggit_taggeditem" ON ("taggit_tag"."id" = "taggit_taggeditem"."tag_id") INNER JOIN "django_content_type" ON ("taggit_taggeditem"."content_type_id" = "django_content_type"."id") WHERE ("django_content_type"."app_label" = 'lego' AND "django_content_type"."model" = 'set' AND "taggit_taggeditem"."object_id" IN (335508))SELECT ••• FROM "taggit_tag" INNER JOIN "taggit_taggeditem" ON ("taggit_tag"."id" = "taggit_taggeditem"."tag_id") INNER JOIN "django_content_type" ON ("taggit_taggeditem"."content_type_id" = "django_content_type"."id") WHERE ("django_content_type"."app_label" = 'lego' AND "django_content_type"."model" = 'set' AND "taggit_taggeditem"."object_id" IN (335508))
0.61
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(203)
context['lego_affiliate_links'] = get_lego_affiliate_links(article.show_ads_for_set_num_short)/home/nathan/rb/site/./lego/buy/sets.py in get_lego_affiliate_links(464)
set = get_or_none(Set.objects, set_num=set_num + '-1')/home/nathan/rb/site/./rb/utils.py in get_or_none(734)
return manager.get(**kwargs)
SELECT "lego_storesetitem"."id", "lego_storesetitem"."store_id", "lego_storesetitem"."is_used", "lego_storesetitem"."cost", "lego_storesetitem"."cost_usd", "lego_storesetitem"."sale_cost", "lego_storesetitem"."sku", "lego_storesetitem"."item_url", "lego_storesetitem"."quantity", "lego_storesetitem"."timestamp", "lego_storesetitem"."set_id", "lego_store"."id", "lego_store"."name", "lego_store"."is_active", "lego_store"."store_url", "lego_store"."add_item_url", "lego_store"."feed_url", "lego_store"."tag_line", "lego_store"."currency_code", "lego_store"."country_code", "lego_store"."bricklink_sellername", "lego_store"."ships_to" FROM "lego_storesetitem" INNER JOIN "lego_store" ON ("lego_storesetitem"."store_id" = "lego_store"."id") WHERE (NOT "lego_storesetitem"."is_used" AND "lego_storesetitem"."set_id" = 335508 AND "lego_storesetitem"."store_id" IN (SELECT U0."id" FROM "lego_store" U0 WHERE (U0."is_active" AND UPPER(U0."store_url"::text) LIKE UPPER('%linksynergy.com%'))))SELECT ••• FROM "lego_storesetitem" INNER JOIN "lego_store" ON ("lego_storesetitem"."store_id" = "lego_store"."id") WHERE (NOT "lego_storesetitem"."is_used" AND "lego_storesetitem"."set_id" = 335508 AND "lego_storesetitem"."store_id" IN (SELECT ••• FROM "lego_store" U0 WHERE (U0."is_active" AND UPPER(U0."store_url"::text) LIKE UPPER('%linksynergy.com%'))))
0.89
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(203)
context['lego_affiliate_links'] = get_lego_affiliate_links(article.show_ads_for_set_num_short)/home/nathan/rb/site/./lego/buy/sets.py in get_lego_affiliate_links(470)
if not items:
SELECT "lego_baseset"."id", "lego_baseset"."set_num", "lego_baseset"."name", "lego_baseset"."year", "lego_baseset"."theme_id", "lego_baseset"."set_type", "lego_baseset"."num_parts", "lego_baseset"."default_inventory_id", "lego_baseset"."is_active", "lego_baseset"."is_accessory", "lego_baseset"."added_dt", "lego_baseset"."added_by_id", "lego_baseset"."last_modified_dt", "lego_baseset"."last_modified_by_id", "lego_baseset"."active_change_dt", "lego_baseset"."active_change_by_id", "lego_baseset"."last_checked_for_bi", "lego_baseset"."descr", "lego_baseset"."primary_photo_id", "lego_baseset"."primary_moc_image_id", "lego_baseset"."is_gear", "lego_baseset"."is_book", "lego_baseset"."search_vector", "lego_baseset"."mfhash_vector", "lego_theme"."id", "lego_theme"."parent_id", "lego_theme"."name", "lego_theme"."slug", "lego_theme"."set_count", "lego_theme"."t1_id", "lego_theme"."t1_name", "lego_theme"."t2_name", "lego_theme"."t3_name", "lego_theme"."lego_blurb", "lego_theme"."banner_img", "lego_theme"."descr", T3."id", T3."parent_id", T3."name", T3."slug", T3."set_count", T3."t1_id", T3."t1_name", T3."t2_name", T3."t3_name", T3."lego_blurb", T3."banner_img", T3."descr", T4."id", T4."parent_id", T4."name", T4."slug", T4."set_count", T4."t1_id", T4."t1_name", T4."t2_name", T4."t3_name", T4."lego_blurb", T4."banner_img", T4."descr", "lego_setstatstotal"."set_id", "lego_setstatstotal"."hits", "lego_setstatstotal"."builds", "lego_setstatstotal"."likes", "lego_setstatstotal"."bi_downloads", "lego_setstatstotal"."featured_hits", "lego_setstatstotal"."user_hits" FROM "lego_baseset" INNER JOIN "lego_theme" ON ("lego_baseset"."theme_id" = "lego_theme"."id") LEFT OUTER JOIN "lego_theme" T3 ON ("lego_theme"."parent_id" = T3."id") LEFT OUTER JOIN "lego_theme" T4 ON (T3."parent_id" = T4."id") LEFT OUTER JOIN "lego_setstatstotal" ON ("lego_baseset"."id" = "lego_setstatstotal"."set_id") WHERE ("lego_baseset"."is_active" AND "lego_baseset"."set_num" = '72163-1') LIMIT 21SELECT ••• FROM "lego_baseset" INNER JOIN "lego_theme" ON ("lego_baseset"."theme_id" = "lego_theme"."id") LEFT OUTER JOIN "lego_theme" T3 ON ("lego_theme"."parent_id" = T3."id") LEFT OUTER JOIN "lego_theme" T4 ON (T3."parent_id" = T4."id") LEFT OUTER JOIN "lego_setstatstotal" ON ("lego_baseset"."id" = "lego_setstatstotal"."set_id") WHERE ("lego_baseset"."is_active" AND "lego_baseset"."set_num" = '72163-1') LIMIT 21
0.40
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(204)
context['lego_affiliate_links_set'] = get_or_none(BaseSet.objects, set_num=article.show_ads_for_set_num_short + '-1')/home/nathan/rb/site/./rb/utils.py in get_or_none(734)
return manager.get(**kwargs)
SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 83025 LIMIT 21SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 83025 LIMIT 21
0.10
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)
SELECT "countries_plus_country"."iso", "countries_plus_country"."iso3", "countries_plus_country"."iso_numeric", "countries_plus_country"."fips", "countries_plus_country"."name", "countries_plus_country"."capital", "countries_plus_country"."area", "countries_plus_country"."population", "countries_plus_country"."continent", "countries_plus_country"."tld", "countries_plus_country"."currency_code", "countries_plus_country"."currency_symbol", "countries_plus_country"."currency_name", "countries_plus_country"."phone", "countries_plus_country"."postal_code_format", "countries_plus_country"."postal_code_regex", "countries_plus_country"."languages", "countries_plus_country"."geonameid", "countries_plus_country"."neighbours", "countries_plus_country"."equivalent_fips_code" FROM "countries_plus_country" WHERE "countries_plus_country"."iso" = 'US' LIMIT 21SELECT ••• FROM "countries_plus_country" WHERE "countries_plus_country"."iso" = 'US' LIMIT 21
0.12
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./rb/templatetags/rb_geo.py in geo_currency(20)
geo_data = user.geo.get_user_currency()/home/nathan/rb/site/./geo/geo.py in get_user_currency(253)
country = Country.objects.get(iso=country_code)
74
</a>
75
</li>
76
<li>
77
{% geo_currency request.user %}
78
</li>
79
{% comment %}
80
<li class="hidden-xs hidden-sm">
81
<a href={% if request.user.is_authenticated %}"{% url 'user_profile_settings' request.user.get_username %}#personalisation"{% else %}"#" onclick="return false;"{% endif %} title="All date/times are being converted to this timezone">{% get_user_timezone request.user %}</a>
SELECT "blog_articlecategory"."id", "blog_articlecategory"."name" FROM "blog_articlecategory" WHERE "blog_articlecategory"."id" = 1 LIMIT 21SELECT ••• FROM "blog_articlecategory" WHERE "blog_articlecategory"."id" = 1 LIMIT 21
0.09
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)
SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."username" = 'Jared_Wilhelm' LIMIT 21SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Jared_Wilhelm' LIMIT 21
2 similar queries.
Duplicated 2 times.
0.12
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
avatar_url = provider.get_avatar_url(user, size)/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
avatar = get_primary_avatar(user, size)/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
user = get_user(user)/home/nathan/rb/site/./avatar/utils.py in get_user(33)
return get_user_model().objects.get_by_natural_key(username)
SELECT "avatar_avatar"."id", "avatar_avatar"."user_id", "avatar_avatar"."primary", "avatar_avatar"."avatar", "avatar_avatar"."date_uploaded" FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 83025 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 83025 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESCLIMIT 1
2 similar queries.
Duplicated 2 times.
0.09
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
avatar_url = provider.get_avatar_url(user, size)/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
avatar = get_primary_avatar(user, size)/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]
SELECT COUNT(*) AS "__count" FROM "threadedcomments_comment" INNER JOIN "django_comments" ON ("threadedcomments_comment"."comment_ptr_id" = "django_comments"."id") WHERE ("django_comments"."content_type_id" = 12 AND "django_comments"."object_pk" = '980' AND "django_comments"."site_id" = 1 AND "django_comments"."is_public" ANDNOT "django_comments"."is_removed")SELECT ••• FROM "threadedcomments_comment" INNER JOIN "django_comments" ON ("threadedcomments_comment"."comment_ptr_id" = "django_comments"."id") WHERE ("django_comments"."content_type_id" = 12 AND "django_comments"."object_pk" = '980' AND "django_comments"."site_id" = 1 AND "django_comments"."is_public" ANDNOT "django_comments"."is_removed")
2 similar queries.
Duplicated 2 times.
1.67
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/venv_rb310/lib/python3.10/site-packages/django_comments/templatetags/comments.py in render(72)
context[self.as_varname] = self.get_context_value_from_queryset(context, qs)/home/nathan/venv_rb310/lib/python3.10/site-packages/threadedcomments/templatetags/threadedcomments_tags.py in get_context_value_from_queryset(116)
return qs.count()
SELECT "blog_articlestats"."article_id", "blog_articlestats"."hits" FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 980 LIMIT 21SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 980 LIMIT 21
0.10
Connection: default
Transaction status: In transaction
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/usr/lib/python3.10/contextlib.py in inner(79)
return func(*args, **kwds)/home/nathan/venv_rb310/lib/python3.10/site-packages/annoying/fields.py in __get__(36)
.__get__(instance, instance_type)
SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."username" = 'Jared_Wilhelm' LIMIT 21SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Jared_Wilhelm' LIMIT 21
2 similar queries.
Duplicated 2 times.
0.10
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
avatar_url = provider.get_avatar_url(user, size)/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
avatar = get_primary_avatar(user, size)/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(112)
user = get_user(user)/home/nathan/rb/site/./avatar/utils.py in get_user(33)
return get_user_model().objects.get_by_natural_key(username)
SELECT "avatar_avatar"."id", "avatar_avatar"."user_id", "avatar_avatar"."primary", "avatar_avatar"."avatar", "avatar_avatar"."date_uploaded" FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 83025 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 83025 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESCLIMIT 1
2 similar queries.
Duplicated 2 times.
0.10
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./avatar/templatetags/avatar_tags.py in avatar_url(33)
avatar_url = provider.get_avatar_url(user, size)/home/nathan/rb/site/./avatar/providers.py in get_avatar_url(48)
avatar = get_primary_avatar(user, size)/home/nathan/rb/site/./avatar/utils.py in get_primary_avatar(120)
avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0]
SELECT COUNT(*) AS "__count" FROM "threadedcomments_comment" INNER JOIN "django_comments" ON ("threadedcomments_comment"."comment_ptr_id" = "django_comments"."id") WHERE ("django_comments"."content_type_id" = 12 AND "django_comments"."object_pk" = '980' AND "django_comments"."site_id" = 1 AND "django_comments"."is_public" ANDNOT "django_comments"."is_removed")SELECT ••• FROM "threadedcomments_comment" INNER JOIN "django_comments" ON ("threadedcomments_comment"."comment_ptr_id" = "django_comments"."id") WHERE ("django_comments"."content_type_id" = 12 AND "django_comments"."object_pk" = '980' AND "django_comments"."site_id" = 1 AND "django_comments"."is_public" ANDNOT "django_comments"."is_removed")
2 similar queries.
Duplicated 2 times.
0.19
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/venv_rb310/lib/python3.10/site-packages/django_comments/templatetags/comments.py in render(72)
context[self.as_varname] = self.get_context_value_from_queryset(context, qs)/home/nathan/venv_rb310/lib/python3.10/site-packages/threadedcomments/templatetags/threadedcomments_tags.py in get_context_value_from_queryset(116)
return qs.count()
SELECT "lego_setphoto"."id", "lego_setphoto"."set_id", "lego_setphoto"."photo_type_id", "lego_setphoto"."submitted_by_id", "lego_setphoto"."timestamp", "lego_setphoto"."is_active", "lego_setphoto"."is_primary" FROM "lego_setphoto" WHERE "lego_setphoto"."id" = 175142 LIMIT 21SELECT ••• FROM "lego_setphoto" WHERE "lego_setphoto"."id" = 175142 LIMIT 21
2 similar queries.
Duplicated 2 times.
0.11
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./lego/models/sets.py in img_dir(785)
file_dir = self.primary_photo.get_img_dir()
SELECT "lego_setphoto"."id", "lego_setphoto"."set_id", "lego_setphoto"."photo_type_id", "lego_setphoto"."submitted_by_id", "lego_setphoto"."timestamp", "lego_setphoto"."is_active", "lego_setphoto"."is_primary" FROM "lego_setphoto" WHERE "lego_setphoto"."id" = 175142 LIMIT 21SELECT ••• FROM "lego_setphoto" WHERE "lego_setphoto"."id" = 175142 LIMIT 21
2 similar queries.
Duplicated 2 times.
0.11
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./lego/models/sets.py in img_dir(785)
file_dir = self.primary_photo.get_img_dir()
42
{# Image #}
43
<div class="rb-card__image {% if set.is_figure %} js-hover-card{% endif %}" {% if set.is_figure %}data-hover="{% url 'minfig_hover' set.set_num %}"{% endif %}>
44
<a href="{{ set.get_absolute_url }}{% if inventory and not set.is_moc %}?inventory={{ inventory.version }}{% endif %}">
45
{% if not set.img_dir and set.is_figure %}
46
{% include 'lego/includes/render_set_img.html' with img_file='nil_mf.jpg' tn_options=tn_options %}
47
{% else %}
48
{% include 'lego/includes/render_set_img.html' with img_file=set.img_dir tn_options=tn_options %}
SELECT "lego_theme"."id", "lego_theme"."parent_id", "lego_theme"."name", "lego_theme"."slug", "lego_theme"."set_count", "lego_theme"."t1_id", "lego_theme"."t1_name", "lego_theme"."t2_name", "lego_theme"."t3_name", "lego_theme"."lego_blurb", "lego_theme"."banner_img", "lego_theme"."descr" FROM "lego_theme" WHERE "lego_theme"."id" = 776 LIMIT 21SELECT ••• FROM "lego_theme" WHERE "lego_theme"."id" = 776 LIMIT 21
0.11
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)
SELECTDISTINCT "taggit_tag"."id", "taggit_tag"."name", "taggit_tag"."slug", COUNT("blog_article"."id") AS "count" FROM "taggit_tag" INNER JOIN "taggit_taggeditem" ON ("taggit_tag"."id" = "taggit_taggeditem"."tag_id") INNER JOIN "django_content_type" ON ("taggit_taggeditem"."content_type_id" = "django_content_type"."id") LEFT OUTER JOIN "blog_article" ON ("taggit_taggeditem"."object_id" = "blog_article"."id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_taggeditem" T5 ON ("taggit_tag"."id" = T5."tag_id") INNER JOIN "blog_article" T6 ON (T5."object_id" = T6."id" AND (T5."content_type_id" = 12)) WHERE ("django_content_type"."app_label" = 'blog' AND "django_content_type"."model" = 'article' AND T6."id" = 980) GROUP BY "taggit_tag"."id"SELECT ••• FROM "taggit_tag" INNER JOIN "taggit_taggeditem" ON ("taggit_tag"."id" = "taggit_taggeditem"."tag_id") INNER JOIN "django_content_type" ON ("taggit_taggeditem"."content_type_id" = "django_content_type"."id") LEFT OUTER JOIN "blog_article" ON ("taggit_taggeditem"."object_id" = "blog_article"."id" AND ("taggit_taggeditem"."content_type_id" = 12)) INNER JOIN "taggit_taggeditem" T5 ON ("taggit_tag"."id" = T5."tag_id") INNER JOIN "blog_article" T6 ON (T5."object_id" = T6."id" AND (T5."content_type_id" = 12)) WHERE ("django_content_type"."app_label" = 'blog' AND "django_content_type"."model" = 'article' AND T6."id" = 980) GROUP BY "taggit_tag"."id"
114.31
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)
SELECT (width*height) AS "area", "ads_banner"."id", "ads_banner"."width", "ads_banner"."height", "ads_banner"."start_date", "ads_banner"."end_date", "ads_banner"."country_code", "ads_banner"."html" FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.680784+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.680895+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 350 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.680762+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.681037+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.680784+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.680895+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 350 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.680762+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.681037+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
4 similar queries.
2.31
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(291)
if not banners:
265
<h4 class="hidden-xs">TAGS</h4>
266
{% include 'blog/includes/render_tags.html' %}
267
268
{% render_banner 262 350 2 %}
269
270
{% include 'blog/includes/render_posts_preview_tabs.html' %}
SELECT (width*height) AS "area", "ads_banner"."id", "ads_banner"."width", "ads_banner"."height", "ads_banner"."start_date", "ads_banner"."end_date", "ads_banner"."country_code", "ads_banner"."html" FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.680784+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.680895+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 350 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.680762+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.681037+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASC LIMIT 1SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.680784+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.680895+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 350 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.680762+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.681037+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASCLIMIT 1
4 similar queries.
1.18
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(298)
banner = banners.order_by('-area', '?')[0]
265
<h4 class="hidden-xs">TAGS</h4>
266
{% include 'blog/includes/render_tags.html' %}
267
268
{% render_banner 262 350 2 %}
269
270
{% include 'blog/includes/render_posts_preview_tabs.html' %}
SELECT (width*height) AS "area", "ads_banner"."id", "ads_banner"."width", "ads_banner"."height", "ads_banner"."start_date", "ads_banner"."end_date", "ads_banner"."country_code", "ads_banner"."html" FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.691389+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.691454+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.691378+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.691572+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.691389+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.691454+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.691378+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.691572+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
4 similar queries.
1.20
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(291)
if not banners:
37
{% include 'blog/includes/render_posts_preview.html' with article=related_article %}
38
</div>
39
{% endfor %}
40
{% render_banner 262 600 5 %}
41
</div>
42
{% endif %}
43
<div id="tab_series" class="tab-pane {% if not related_articles %}active{% endif %}" role="tabpanel">
SELECT (width*height) AS "area", "ads_banner"."id", "ads_banner"."width", "ads_banner"."height", "ads_banner"."start_date", "ads_banner"."end_date", "ads_banner"."country_code", "ads_banner"."html" FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.691389+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.691454+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.691378+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.691572+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASC LIMIT 1SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.691389+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.691454+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.691378+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.691572+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASCLIMIT 1
4 similar queries.
1.13
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(298)
banner = banners.order_by('-area', '?')[0]
37
{% include 'blog/includes/render_posts_preview.html' with article=related_article %}
38
</div>
39
{% endfor %}
40
{% render_banner 262 600 5 %}
41
</div>
42
{% endif %}
43
<div id="tab_series" class="tab-pane {% if not related_articles %}active{% endif %}" role="tabpanel">
SELECT (width*height) AS "area", "ads_banner"."id", "ads_banner"."width", "ads_banner"."height", "ads_banner"."start_date", "ads_banner"."end_date", "ads_banner"."country_code", "ads_banner"."html" FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.695799+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.695857+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.695790+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.695977+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.695799+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.695857+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.695790+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.695977+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
4 similar queries.
1.17
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(291)
if not banners:
SELECT (width*height) AS "area", "ads_banner"."id", "ads_banner"."width", "ads_banner"."height", "ads_banner"."start_date", "ads_banner"."end_date", "ads_banner"."country_code", "ads_banner"."html" FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.695799+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.695857+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.695790+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.695977+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASC LIMIT 1SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.695799+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.695857+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.695790+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.695977+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASCLIMIT 1
4 similar queries.
1.12
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(298)
banner = banners.order_by('-area', '?')[0]
SELECT (width*height) AS "area", "ads_banner"."id", "ads_banner"."width", "ads_banner"."height", "ads_banner"."start_date", "ads_banner"."end_date", "ads_banner"."country_code", "ads_banner"."html" FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.702837+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.702895+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.702828+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.703017+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.702837+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.702895+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.702828+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.703017+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
4 similar queries.
1.12
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(291)
if not banners:
74
{% include 'blog/includes/render_posts_preview.html' with article=popular_article %}
SELECT (width*height) AS "area", "ads_banner"."id", "ads_banner"."width", "ads_banner"."height", "ads_banner"."start_date", "ads_banner"."end_date", "ads_banner"."country_code", "ads_banner"."html" FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.702837+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.702895+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.702828+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.703017+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASC LIMIT 1SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:02.702837+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:02.702895+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:02.702828+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:02.703017+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASCLIMIT 1
4 similar queries.
1.12
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./blog/views.py in blog_article_w_slug(236)
return blog_article(request, article_id)/home/nathan/rb/site/./blog/views.py in blog_article(213)
return cached_blog_article(request, article.id)/home/nathan/rb/site/./rb/views/decorators/auth.py in wrapper(169)
result = view_func(request, *args, **kwargs)/home/nathan/rb/site/./blog/views.py in cached_blog_article(209)
return render(request, 'blog/blog_article.html', context)/home/nathan/rb/site/./ads/templatetags/ads/drawing.py in render_banner(298)
banner = banners.order_by('-area', '?')[0]
74
{% include 'blog/includes/render_posts_preview.html' with article=popular_article %}