Follow Din Djarin and Grogu deep inside the depths of the Hutt Palace on Nal Hutta. After seeing Jabba's palace on Tatooine and the horrors inside in the classic trilogy, we know that this is no place you want to be. It seems the Hutts did go with the advance in technology and got some giant sentries instead of the Gamorreans to guard the palace. But it gets worse as the duo also encounters the bounty hunter Embo and his (new) Annoba pet Keibu. How will that work out?
Don't worry about spoilers, I still haven't seen the movie (yet).
The Set
The official description of the set is:
Awesome droid building toy for battle play Join forces with The Mandalorian and Grogu for an epic Hutt Palace Sentry Droid Showdown (75451) with this LEGO® Star Wars™ building toy for kids. Adjust the hands, arms, legs and feet of the mighty droid and fire its stud shooter. Equip Mando with a jetpack and blaster pistol to fight back. Help Grogu open the back of the droid so he can get inside and deactivate it. Then open the palace gate ready for more close combat against rival bounty hunter Embo, with his bowcaster and hunting partner Keibu.
This brick-built playset offers a great way to relive thrilling scenes from Star Wars: The Mandalorian and Grogu™ and create action-packed new stories. And kids can create with confidence using the LEGO Builder app – zoom, rotate in 3D and track progress with easy-to-follow digital instructions.
A fun birthday or Christmas gift for boys, girls and any fans aged 9 years old and over, the set contains 415 pieces.
ACTION-PACKED BUILDING TOY – Recreate the Hutt Palace Sentry Droid Showdown (75451) with this detailed set based on Star Wars: The Mandalorian and Grogu™ 4 CHARACTERS FOR PRETEND PLAY – Kids can role-play battle scenarios as they team up with The Mandalorian and Grogu against Embo and his hunting partner Keibu POSABLE FIGURE – Move the 3-armed Sentry Droid’s hands, arms, legs and feet, fire its stud shooter and open the back to put Grogu inside to deactivate the droid RIVAL BOUNTY HUNTERS – Young fans can recreate scenes or imagine new ones as they open the palace gate and then use Mando’s jetpack and blaster pistol to take on Embo with his bowcaster GIFT IDEA FOR KIDS – This brick-built playset makes a cool Star Wars™ gift for boys, girls and any fans aged 9 years old and over A HELPING HAND – The LEGO® Builder app guides kids on an intuitive creative adventure where they can track progress, zoom in and rotate sets using 3D instructions, and more EXPLORE THE GALAXY – Look out for more collectable sets (sold separately) inspired by Star Wars: The Mandalorian and Grogu™ to relive epic scenes or create original stories DIMENSIONS – The Guardian Droid in this 415-piece set stands over 14 cm (5.5 in.) tall
The set is available at the LEGO store for $ 49.99 / € 49,99 / £ 44.99 / AU$ 89.99.
The set contains 415 parts (plus 39 spare parts), and that results in 11.0 ct / 11,0 ct / 9.9 p / 19.8 ct piece, that (sadly) is below average for Star Wars sets. Considerng parts and Minifigs, the price is still too high despite the new mold for Keibu, a new (exclusive) Minifig of Embo and 8 recolors. Din and Grogu got the same Minifigs as in the other set of this wave. This set is not exclusive and there are already discounts around 25 % available.
The Box
The box measures 26.2 x 19.1 x 6.1 cm (10⅜" x 7½" x 2⅜"). It contains 4 numbered bags, a flexible cable, one instructions manual and one tiny sticker sheet.
The Instructions
The instruction manual measures 196 mm x 175 mm, has 87 pages and 145 building steps. More is not to say on the manual. Sadly, we get no additional information or pictures of the sentry droid (see one here).
The Parts
The set contains 415 parts and 39 spares, in 18 colors, and 33 part categories, with a total of 196 unique parts/color combinations.
1x The Mandalorian / Din Djarin, Dark Brown Outfit with Jet Pack
Mando and Grogu are the same Minifigs as in others sets of this wave (see here)
Embo only appeared in one set in 2011 (7930 Bounty Hunter Assault Gunship) despite being a really fun and iconic character from the Clone Wars series. While often being on the side of the villains, he also fights alongside the heroes in some adventures in the Clone Wars series and shows his incredible skills. The Minifig got a new design based on The Mandalorian & Grogu movie. The Minifig is fantastic with his special hat, that he can also use as shield and throwing weapon or even to slide on it to escape or chase someone. The only thing I would criticize on this Minifig is that it has Embo's iconic fighting skirt only printed and not as a cloth piece (e.g., like the Monster Hunter from CMF series 29 or, even better, like Chirrut Imwe).
The new Annobi mold is much bigger than I expected. Compared to the wolf from the Wolfpack Beastmaster, its size really shows. The mane and tip of the tail are great features and are made from a rubber material that has a nice contrast to the rest of the body. I think this mold is great for a big, mean alpha male of a (actual) wolfpack or companion of a Wolfpack leader or DnD character.
The set has 39 spare parts with a few interesting parts but no prints:
The Build
The build itself is straightforward. The small gate is a simple build that has a hinted rock structure and is finished after only a couple steps. The droid itself, which is called ARGES by the way, follows established ways of other mechs like from Ninjago (This is the way!). The body uses a lot of SNOT to have connection points for the outer layer. New is the head that actually sits between the shoulders and needs to be built in. It still sits on a technic pin and has a tiny bit of room for movement between the brackets.
The front and back of the droid are separate sections with many tiles and curved slopes. A flexible cable connects the two and should resemble a belt alongside a sticker on top of the right shoulder. The third hand is a bit weird (but accurate) feature. Arms and legs use the angled plate, which makes them look bent but doesn't allow any movement of elbow and knee. The knees are broadened with perfectly placed round plates and round bricks atop the middle section of the angled plate. Thanks to many brackets, we can add a lot of details on arms and legs.
Conclusion
The overall look of the droid is quite good. It reminds me of Boba Fett because of the dark red and dark green colors, but I think there is no actual connection. Compared to behind-the-scenes picture of the actual life-sized models of the droid (the scenes with it are filmed in stop motion), the colors are way too bright as the original has very dull colors and a more dusty look.
Besides the movements of the droid, it has two play features. When you remove the back, it reveals a small compartment Grogu fits in and maybe he can meddle with the droid from there or shut it down. The left arm has a hinge brick that allows placing a Minifig on the arm, probably for fighting scenes.
Overall, the set is underwhelming in my eyes. The mech doesn't really stand out against the other Star Wars mechs that come for $ 15. Yes, it is a little bit bigger, but other than that... It doesn't seem fully worked out and is a bit careless with the rugged details and too bright colors. One might also ask, why the second droid of this scene isn't included in the set. All of that leaves me with the impression that this set is just about the Embo Minifig and the Keibu mold as the sales angle, and the rest is just there to add some parts. But to be fair, we have to consider that this is meant as a playset for 9+ kids, and therefore the accuracy probably isn't that important. Yet, the inclusion of Embo is a strong hint that this set also covertly addresses adults, especially Minifig collectors (Embo and Keibu together go for 37 € to 40 € on Bricklick).
default
1068.12 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" = 976) LIMIT 21SELECT ••• FROM "blog_article" WHERE ("blog_article"."is_active" AND "blog_article"."id" = 976) LIMIT 21
9 similar queries.
0.42
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: 75451-1 Hutt Palace Sentry Droid Showdown') + SIMILARITY("blog_article"."body", 'Contents
IntroductionThe SetThe BoxThe Instructions
The PartsThe BuildConclusion
Introduction
Follow Din Djarin and Grogu deep inside the depths of the Hutt Palace on Nal Hutta. After seeing Jabba''s palace on Tatooine and the horrors inside in the classic trilogy, we know that this is no place you want to be. It seems the Hutts did go with the advance in technology and got some giant sentries instead of the Gamorreans to guard the palace. But it gets worse as the duo also encounters the bounty hunter Embo and his (new) Annoba pet Keibu. How will that work out?
Don''t worry about spoilers, I still haven''t seen the movie (yet).
The Set
The official description of the set is:
Awesome droid building toy for battle playJoin forces with The Mandalorian and Grogu for an epic Hutt Palace Sentry Droid Showdown (75451) with this LEGO® Star Wars™ building toy for kids. Adjust the hands, arms, legs and feet of the mighty droid and fire its stud shooter. Equip Mando with a jetpack and blaster pistol to fight back. Help Grogu open the back of the droid so he can get inside and deactivate it. Then open the palace gate ready for more close combat against rival bounty hunter Embo, with his bowcaster and hunting partner Keibu.
This brick-built playset offers a great way to relive thrilling scenes from Star Wars: The Mandalorian and Grogu™ and create action-packed new stories. And kids can create with confidence using the LEGO Builder app – zoom, rotate in 3D and track progress with easy-to-follow digital instructions.
A fun birthday or Christmas gift for boys, girls and any fans aged 9 years old and over, the set contains 415 pieces.
ACTION-PACKED BUILDING TOY – Recreate the Hutt Palace Sentry Droid Showdown (75451) with this detailed set based on Star Wars: The Mandalorian and Grogu™ 4 CHARACTERS FOR PRETEND PLAY – Kids can role-play battle scenarios as they team up with The Mandalorian and Grogu against Embo and his hunting partner Keibu POSABLE FIGURE – Move the 3-armed Sentry Droid’s hands, arms, legs and feet, fire its stud shooter and open the back to put Grogu inside to deactivate the droid RIVAL BOUNTY HUNTERS – Young fans can recreate scenes or imagine new ones as they open the palace gate and then use Mando’s jetpack and blaster pistol to take on Embo with his bowcaster GIFT IDEA FOR KIDS – This brick-built playset makes a cool Star Wars™ gift for boys, girls and any fans aged 9 years old and over A HELPING HAND – The LEGO® Builder app guides kids on an intuitive creative adventure where they can track progress, zoom in and rotate sets using 3D instructions, and more EXPLORE THE GALAXY – Look out for more collectable sets (sold separately) inspired by Star Wars: The Mandalorian and Grogu™ to relive epic scenes or create original stories DIMENSIONS – The Guardian Droid in this 415-piece set stands over 14 cm (5.5 in.) tall
The set is available at the LEGO store for $ 49.99 / € 49,99 / £ 44.99 / AU$ 89.99.
The set contains 415 parts (plus 39 spare parts), and that results in 11.0 ct / 11,0 ct / 9.9 p / 19.8 ct piece, that (sadly) is below average for Star Wars sets. Considerng parts and Minifigs, the price is still too high despite the new mold for Keibu, a new (exclusive) Minifig of Embo and 8 recolors. Din and Grogu got the same Minifigs as in the other set of this wave. This set is not exclusive and there are already discounts around 25 % available.
The Box
The box measures 26.2 x 19.1 x 6.1 cm (10⅜" x 7½" x 2⅜"). It contains 4 numbered bags, a flexible cable, one instructions manual and one tiny sticker sheet.
The Instructions
The instruction manual measures 196 mm x 175 mm, has 87 pages and 145 building steps. More is not to say on the manual. Sadly, we get no additional information or pictures of the sentry droid (see one here).
The Parts
The set contains 415 parts and 39 spares, in 18 colors, and 33 part categories, with a total of 196 unique parts/color combinations.Main colors are:
Dark Bluish Gray: 66 unique parts, 155 quantity.
Light Bluish Gray: 32 unique parts, 73 quantity.
Dark Tan: 18 unique parts, 40 quantity.
Main categories are:
Plates Special: 42 unique parts, 97 quantity.
Plates: 24 unique parts, 66 quantity.
Bricks Curved: 14 unique parts, 27 quantity.
The Minifigs
1x Embo, Olive Green
1x Grogu, 7789 Body, Mandalorian Apprentice
1x The Mandalorian / Din Djarin, Dark Brown Outfit with Jet Pack
Mando and Grogu are the same Minifigs as in others sets of this wave (see here)
Embo only appeared in one set in 2011 (7930 Bounty Hunter Assault Gunship) despite being a really fun and iconic character from the Clone Wars series. While often being on the side of the villains, he also fights alongside the heroes in some adventures in the Clone Wars series and shows his incredible skills. The Minifig got a new design based on The Mandalorian & Grogu movie. The Minifig is fantastic with his special hat, that he can also use as shield and throwing weapon or even to slide on it to escape or chase someone. The only thing I would criticize on this Minifig is that it has Embo''s iconic fighting skirt only printed and not as a cloth piece (e.g., like the ')) 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:07.565276+00:00'::timestamptz ANDNOT ("blog_article"."id" = 976)) 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: 75451-1 Hutt Palace Sentry Droid Showdown') + SIMILARITY("blog_article"."body", 'Contents
IntroductionThe SetThe BoxThe Instructions
The PartsThe BuildConclusion
Introduction
Follow Din Djarin and Grogu deep inside the depths of the Hutt Palace on Nal Hutta. After seeing Jabba''s palace on Tatooine and the horrors inside in the classic trilogy, we know that this is no place you want to be. It seems the Hutts did go with the advance in technology and got some giant sentries instead of the Gamorreans to guard the palace. But it gets worse as the duo also encounters the bounty hunter Embo and his (new) Annoba pet Keibu. How will that work out?
Don''t worry about spoilers, I still haven''t seen the movie (yet).
The Set
The official description of the set is:
Awesome droid building toy for battle playJoin forces with The Mandalorian and Grogu for an epic Hutt Palace Sentry Droid Showdown (75451) with this LEGO® Star Wars™ building toy for kids. Adjust the hands, arms, legs and feet of the mighty droid and fire its stud shooter. Equip Mando with a jetpack and blaster pistol to fight back. Help Grogu open the back of the droid so he can get inside and deactivate it. Then open the palace gate ready for more close combat against rival bounty hunter Embo, with his bowcaster and hunting partner Keibu.
This brick-built playset offers a great way to relive thrilling scenes from Star Wars: The Mandalorian and Grogu™ and create action-packed new stories. And kids can create with confidence using the LEGO Builder app – zoom, rotate in 3D and track progress with easy-to-follow digital instructions.
A fun birthday or Christmas gift for boys, girls and any fans aged 9 years old and over, the set contains 415 pieces.
ACTION-PACKED BUILDING TOY – Recreate the Hutt Palace Sentry Droid Showdown (75451) with this detailed set based on Star Wars: The Mandalorian and Grogu™ 4 CHARACTERS FOR PRETEND PLAY – Kids can role-play battle scenarios as they team up with The Mandalorian and Grogu against Embo and his hunting partner Keibu POSABLE FIGURE – Move the 3-armed Sentry Droid’s hands, arms, legs and feet, fire its stud shooter and open the back to put Grogu inside to deactivate the droid RIVAL BOUNTY HUNTERS – Young fans can recreate scenes or imagine new ones as they open the palace gate and then use Mando’s jetpack and blaster pistol to take on Embo with his bowcaster GIFT IDEA FOR KIDS – This brick-built playset makes a cool Star Wars™ gift for boys, girls and any fans aged 9 years old and over A HELPING HAND – The LEGO® Builder app guides kids on an intuitive creative adventure where they can track progress, zoom in and rotate sets using 3D instructions, and more EXPLORE THE GALAXY – Look out for more collectable sets (sold separately) inspired by Star Wars: The Mandalorian and Grogu™ to relive epic scenes or create original stories DIMENSIONS – The Guardian Droid in this 415-piece set stands over 14 cm (5.5 in.) tall
The set is available at the LEGO store for $ 49.99 / € 49,99 / £ 44.99 / AU$ 89.99.
The set contains 415 parts (plus 39 spare parts), and that results in 11.0 ct / 11,0 ct / 9.9 p / 19.8 ct piece, that (sadly) is below average for Star Wars sets. Considerng parts and Minifigs, the price is still too high despite the new mold for Keibu, a new (exclusive) Minifig of Embo and 8 recolors. Din and Grogu got the same Minifigs as in the other set of this wave. This set is not exclusive and there are already discounts around 25 % available.
The Box
The box measures 26.2 x 19.1 x 6.1 cm (10⅜" x 7½" x 2⅜"). It contains 4 numbered bags, a flexible cable, one instructions manual and one tiny sticker sheet.
The Instructions
The instruction manual measures 196 mm x 175 mm, has 87 pages and 145 building steps. More is not to say on the manual. Sadly, we get no additional information or pictures of the sentry droid (see one here).
The Parts
The set contains 415 parts and 39 spares, in 18 colors, and 33 part categories, with a total of 196 unique parts/color combinations.Main colors are:
Dark Bluish Gray: 66 unique parts, 155 quantity.
Light Bluish Gray: 32 unique parts, 73 quantity.
Dark Tan: 18 unique parts, 40 quantity.
Main categories are:
Plates Special: 42 unique parts, 97 quantity.
Plates: 24 unique parts, 66 quantity.
Bricks Curved: 14 unique parts, 27 quantity.
The Minifigs
1x Embo, Olive Green
1x Grogu, 7789 Body, Mandalorian Apprentice
1x The Mandalorian / Din Djarin, Dark Brown Outfit with Jet Pack
Mando and Grogu are the same Minifigs as in others sets of this wave (see here)
Embo only appeared in one set in 2011 (7930 Bounty Hunter Assault Gunship) despite being a really fun and iconic character from the Clone Wars series. While often being on the side of the villains, he also fights alongside the heroes in some adventures in the Clone Wars series and shows his incredible skills. The Minifig got a new design based on The Mandalorian & Grogu movie. The Minifig is fantastic with his special hat, that he can also use as shield and throwing weapon or even to slide on it to escape or chase someone. The only thing I would criticize on this Minifig is that it has Embo''s iconic fighting skirt only printed and not as a cloth piece (e.g., like the ')) 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:07.565276+00:00'::timestamptz ANDNOT ("blog_article"."id" = 976)) ORDER BY 19 DESC, "blog_article"."published_date" DESCLIMIT 20
935.38
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:08.515633+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:08.515633+00:00'::timestamptz) ORDER BY "blog_articlestats"."hits" DESCLIMIT 20
3.33
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.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(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.28
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.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(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.25
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.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(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.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(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.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('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.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('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.25
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.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('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.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 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.15
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-24T00:00:00.076135+00:00'::timestamptz AND "blog_article"."id" > 976) OR "blog_article"."published_date" > '2026-10-24T00:00:00.076135+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-24T00:00:00.076135+00:00'::timestamptz AND "blog_article"."id" > 976) OR "blog_article"."published_date" > '2026-10-24T00:00:00.076135+00:00'::timestamptz)) ORDER BY "blog_article"."published_date" ASC, "blog_article"."id" ASCLIMIT 1
0.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(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-24T00:00:00.076135+00:00'::timestamptz AND "blog_article"."id" < 976) OR "blog_article"."published_date" < '2026-10-24T00:00:00.076135+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-24T00:00:00.076135+00:00'::timestamptz AND "blog_article"."id" < 976) OR "blog_article"."published_date" < '2026-10-24T00:00:00.076135+00:00'::timestamptz)) ORDER BY "blog_article"."published_date" DESC, "blog_article"."id" DESCLIMIT 1
0.42
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" = '75451-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" = '75451-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 (329809))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 (329809))
0.36
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" = 329809 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" = 329809 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%'))))
2.63
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" = '75451-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" = '75451-1') LIMIT 21
0.64
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" = 375158 LIMIT 21SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = 375158 LIMIT 21
0.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(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.15
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.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 "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" = 'Chricki' LIMIT 21SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Chricki' LIMIT 21
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(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" = 375158 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 375158 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" = '976' 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" = '976' AND "django_comments"."site_id" = 1 AND "django_comments"."is_public" ANDNOT "django_comments"."is_removed")
2 similar queries.
Duplicated 2 times.
1.75
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" = 976 LIMIT 21SELECT ••• FROM "blog_articlestats" WHERE "blog_articlestats"."article_id" = 976 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" = 'Chricki' LIMIT 21SELECT ••• FROM "auth_user" WHERE "auth_user"."username" = 'Chricki' LIMIT 21
2 similar queries.
Duplicated 2 times.
0.08
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" = 375158 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESC LIMIT 1SELECT ••• FROM "avatar_avatar" WHERE "avatar_avatar"."user_id" = 375158 ORDER BY "avatar_avatar"."primary" DESC, "avatar_avatar"."date_uploaded" DESCLIMIT 1
2 similar queries.
Duplicated 2 times.
0.08
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" = '976' 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" = '976' 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" = 171843 LIMIT 21SELECT ••• FROM "lego_setphoto" WHERE "lego_setphoto"."id" = 171843 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" = 171843 LIMIT 21SELECT ••• FROM "lego_setphoto" WHERE "lego_setphoto"."id" = 171843 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/./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" = 158 LIMIT 21SELECT ••• FROM "lego_theme" WHERE "lego_theme"."id" = 158 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)
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" = 976) 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" = 976) GROUP BY "taggit_tag"."id"
81.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(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:08.681784+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.681913+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 350 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.681757+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.682054+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:08.681784+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.681913+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 350 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.681757+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.682054+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
4 similar queries.
2.42
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:08.681784+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.681913+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 350 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.681757+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.682054+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:08.681784+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.681913+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 350 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.681757+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.682054+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASCLIMIT 1
4 similar queries.
1.69
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:08.692876+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.692960+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.692863+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.693083+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:08.692876+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.692960+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.692863+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.693083+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
4 similar queries.
1.53
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:08.692876+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.692960+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.692863+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.693083+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:08.692876+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.692960+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.692863+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.693083+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASCLIMIT 1
4 similar queries.
1.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(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:08.697737+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.697799+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.697727+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.697918+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:08.697737+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.697799+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.697727+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.697918+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
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(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:08.697737+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.697799+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.697727+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.697918+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:08.697737+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.697799+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.697727+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.697918+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASCLIMIT 1
4 similar queries.
1.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/./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:08.704789+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.704858+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.704778+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.704981+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')SELECT ••• FROM "ads_banner" WHERE ("ads_banner"."start_date" < '2026-11-15T23:51:08.704789+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.704858+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.704778+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.704981+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US')
4 similar queries.
1.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(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:08.704789+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.704858+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.704778+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.704981+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:08.704789+00:00'::timestamptz AND ("ads_banner"."end_date" > '2026-11-15T23:51:08.704858+00:00'::timestamptz OR "ads_banner"."end_date" ISNULL) AND "ads_banner"."height" <= 600 AND "ads_banner"."start_date" < '2026-11-15T23:51:08.704778+00:00'::timestamptz AND "ads_banner"."width" <= 262 AND ("ads_banner"."end_date" ISNULLOR "ads_banner"."end_date" > '2026-11-15T23:51:08.704981+00:00'::timestamptz) AND "ads_banner"."country_code" = 'US') ORDER BY 1 DESC, RANDOM() ASCLIMIT 1
4 similar queries.
1.15
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 %}