27 captures
29 Sep 2017 - 28 Dec 2025
May JUN Jul
15
2021 2022 2023
success
fail

About this capture

COLLECTED BY

Collection: Save Page Now Outlinks

TIMESTAMPS

The Wayback Machine - http://web.archive.org/web/20220615140412/https://www.fullstackpython.com/django-orm.html
 

Full Stack Python
All topics | Blog | Supporter's Edition | @fullstackpython | Facebook | What's new?

Django ORM






The Django web framework includes a default object-relational mapping layer (ORM) that can be used to interact with application data from various relational databases such as SQLite, PostgreSQL and MySQL.

Official Django logo. Trademark Django Software Foundation.
The Django ORM is an implementation of the object-relational mapping (ORM) concept. Learn more in the data chapter or view all topics.

Django ORM resources


The Django ORM has evolved over the past dozen years since it was created make sure to not only read up on the latest tutorials but also learn about newer optimizations, such as prefetch_related and select_related, that have been added throughout the project's history.



Django models, encapsulation and data integrity is a detailed article by Tom Christie on encapsulating Django models for data integrity.



Django Debug Toolbar is a powerful Django ORM database query inspection tool. Highly recommended during development to ensure you're writing reasonable query code. Django Silk is another inspection tool and has capabilities to do more than just SQL inspection.



Django QuerySet Examples (with SQL code included) teaches how QuerySets work and shows the corresponding SQL code behind the Python code you write to use the ORM.



Making a specific Django app faster is a Django performance blog post with some tips on measuring performance and optimizing based on the measured results.



Why I Hate the Django ORM is Alex Gaynor's overview of the bad designs decisions, some of which he made, while building the Django ORM.



Going Beyond Django ORM with Postgres is specific to using PostgreSQL with Django.



How to view Django ORM SQL queries along with django-sql-explorer allow you to better understand the SQL code that is generated from the Django ORM.



Migrating a Django app from MySQL to PostgreSQL is a quick look at how to move from MySQL to PostgreSQL. However, my guess is that any Django app that's been running for awhile on one relational database will require a lot more work to port over to another backend even with the power of the ORM.



Adding basic search to your Django site shows how to write generic queries that'll allow you to provide site search via the Django ORM without relying on another tool like ElasticSearch. This is great for small sites before you scale them up with a more robust search engine.



The Django ORM Cookbook provides code recipes for various ways to use the Django ORM to insert and query data.



How to use Django's Proxy Models is a solid post on a Django ORM concept that doesn't frequently get a lot of love or explanation.



Tightening Django Admin Logins shows you how to log authentication failures, create an IP addresses white list and combine fail2ban with the authentication failures list.



How to Turn Django Admin Into a Lightweight Dashboard and How to Use Grouping Sets in Django are two great posts on how to add custom features to the Django Admin as well as optimize with more advanced SQL when the first attempt at the queries get slow due to larger amounts of data.



Sorting querysets with NULLs in Django shows what to do if you're struggling with the common issue of sorting columns that contain NULL values.



Best Practices working with Django models in Python has a ton of great advice on proper model naming conventions, quirks to avoid with ForeignKey field relationships, handling IDs and many other edge cases that come up when frequently working with Django's ORM.



Merging Django ORM with SQLAlchemy for Easier Data Analysis provides rationale for using the SQLAlchemy ORM instead of Django's default ORM in some situations.



Working with huge data sets in Django explains how to slice the data you retrieve by query into pages and then use prefetch_related on a subset of the data rather than your whole data set.



Solving performance problems in the Django ORM gives a slew of great code snippets to use with django.db.connection so you can discover issues such as unexpected extra queries and problematic key relationships.



Full-text search in Django with PostgreSQL is a very detailed example that shows how to work specifically with a PostgreSQL backend.



Django Anti-Patterns: Signals explains why you should avoid using Django ORM's signals feature in your applications if you want to make them easier to maintain.



Django ORM optimization story on selecting the least possible goes through one developer's Django ORM code refactoring to optimize the performance and results of a single query.



Fixing your Django async job - database integration is a great article on how to properly integrate the RQ task queue with a Django backend.


Django migrations resources


Django migrations were added in version 1.7. Django projects prior to 1.7 used the South project, which is now deprecated and merged into Django. Migrations can be tricky to wrap your head around as you're getting started with the overall framework but the following resources should get you past the initial hurdles.



Django Migrations - a Primer takes you through the new migrations system integrated in the Django core as of Django 1.7, looking specifically at a solid workflow that you can use for creating and applying migrations.



Django 1.7: Database Migrations Done Right explains why South was not directly integrated into Django, how migrations are built and shows how backwards migrations work.



Executing custom SQL in Django migrations examines how you can hook in straight SQL that will run during a Django migration.



Squashing and optimizing migrations in Django shows a simple example with code for how to use the migrations integrated into Django 1.7.



Supporting both Django 1.7 and South explains the difficulty of supporting Django 1.7 and maintaining South migrations for Django 1.6 then goes into how it can be done.



Writing unit tests for Django migrations contains a ton of awesome code examples for testing your migrations to ensure data migrations work well throughout the lifecycle of your Django project.



Strategies for reducing memory usage in Django migrations shows the large memory usage problem that often occurs with Django migrations at scale and what you can do to mitigate the issue.



How to Create Django Data Migrations has a straightforward blog ORM modeling example to show how to perform data migration.



Keeping data integrity with Django migrations shows two table modification scenarios, one where a column needs to be added to an existing table, and another where a Many-to-Many field needs to be converted to a standard ForeignKey column while retaining all of the data.



Double-checked locking with Django ORM shows how you can implement a double-checking locking pattern in the Django ORM with PostgreSQL, which is useful when you want to prevent multiple processes from accessing the same data at the same time.



Using Django Check Constraints for the Sum of Percentage Fields shows how you can combine several PositiveIntegerField model fields with a checking constraint and a web form that ensures all of the fields sum up to a precise amount, such as 100%.



Learn Django ORM - Query and Filters is a video tutorials series that gives an overview of the ORM's querying and filtering capabilities.


What would you like to learn about after the Django ORM?





Tell me about standard relational databases.
 




What're these NoSQL data stores hipster developers keep talking about?
 




I want to know about working with data in Python.
 







Table of Contents



1. Introduction 2. Development Environments 3. Data Relational Databases PostgreSQL MySQL SQLite Object-relational Mappers SQLAlchemy Peewee Django ORM Pony ORM NoSQL Data Stores Redis MongoDB Apache Cassandra Neo4j Data analysis pandas SciPy & NumPy Data visualization Bokeh d3.js Matplotlib Markup Languages Markdown reStructuredText Oracle 4. Web Development 5. Deployment 6. DevOps Changelog What Full Stack Means About the Author Future Directions Page Statuses ...or view the full table of contents.



Full Stack Python


Full Stack Python is an open book that explains concepts in plain language and provides helpful resources for those topics.

Updates via Twitter & Facebook.



Chapters



1. Introduction 2. Development Environments 3. Data » Django ORM 4. Web Development 5. Deployment 6. DevOps Changelog What Full Stack Means About the Author Future Directions Page Statuses ...or view the full table of contents.

 



Matt Makai 2012-2022