Hello! I'm Craig, and I'm a Michigan-based software developer for Zapier.com. In my free time I like to over-engineer email solutions for django, under-engineer Kivy tools, and play lots and lots of ultimate frisbee.
Correctly mocking external entities in your unit tests is a bit tricky syntactically, and I have to look up the exact incantations to type every single time they're needed. Thus, I'll make a quick sales pitch about mocking, quickly explain it to the best of my current understanding, and end with a sequence of tricks to be updated as I learn more. In essence, it's my own personal cheat sheet, stored in an accessible location I'm unlikely to misplace.READ MORE
Everyone knows about Django's
Q objects and how to chain them together for complex lookups. The syntax is straight forward.
results = MyModel.objects.filter(Q(key1="value1") | Q(key2="value2"))
That generates this unexciting SQL:
SELECT * FROM `my_table` WHERE (`my_table`.`key1` = "value1" OR `my_table`.`key2` = "value2")
But what happens when you have an unknown amount of filters?READ MORE
At Stik.com, we're using Django to supply a RESTful interface to our database. Our support staff is also using its admin for simple ticket items. Fortunately for the business, but unfortunately for the Django admin, we have lots of tables with hundreds of millions of rows, and a few in the billions. We really didn't want to spend the time writing our own admin section for support staff, so the Django admin was a godsend... until we rolled it out to production and saw admin pages never respond ever. Read on to see what our problem was and how we fixed it.
Large tables in InnoDB may not be able to even render their
change_list view due to (possibly 2) expensive
COUNT(*) queries. With tables of 100M+ records, this can take 15+ minutes to complete, even on fast servers.
Before we get started, I'm assuming you've mastered or completed the first part of the tutorial, your site code itself is complete, your virtual environment is functional in local development, and you have your domain name pointed the IP of the EC2 instance we just made. If any of these assumptions are false then you are probably getting ahead of yourself.READ MORE
MySQL-python won't compile because it needs the MySQL headers which are not in the expected location under a MAMP install. Luckily, this isn't hard to remedy.READ MORE