The Definitive Guide to Django: Web Development Done Right Adrian Holovaty, Jacob K. Moss www.djangobook.com Buy at Amazon ISBN-10: 1590597257 ISBN-13: 978-1590597255 The Django Book Table of Contents 1 Introduction to Django....................................................................................................................................1 1.1 What Is a Web Framework?..............................................................................................................1 1.2 The MVC Design Pattern...................................................................................................................2 1.3 Django’s History................................................................................................................................3 1.4 How to Read This Book.....................................................................................................................4 1.4.1 Required Programming Knowledge.........................................................................................5 1.4.2 Required Python Knowledge....................................................................................................5 1.4.3 New Django Features...............................................................................................................5 1.4.4 Getting Help.............................................................................................................................5 1.4.5 What’s Next..............................................................................................................................6 2 Getting Started.................................................................................................................................................7 2.1 Installing Python................................................................................................................................7 2.2 Installing Django................................................................................................................................7 2.2.1 Installing an Official Release...................................................................................................7 2.2.2 Installing Django from Subversion..........................................................................................8 2.3 Setting Up a Database........................................................................................................................8 2.3.1 Using Django with PostgreSQL...............................................................................................9 2.3.2 Using Django with SQLite 3....................................................................................................9 2.3.3 Using Django with MySQL.....................................................................................................9 2.3.4 Using Django Without a Database...........................................................................................9 2.4 Starting a Project..............................................................................................................................10 2.4.1 The Development Server........................................................................................................10 2.5 What’s Next?...................................................................................................................................11 3 The Basics of Dynamic Web Pages...............................................................................................................12 3.1 Your First View: Dynamic Content.................................................................................................12 3.2 Mapping URLs to Views.................................................................................................................13 3.3 How Django Processes a Request....................................................................................................15 3.3.1 How Django Processes a Request: Complete Details............................................................16 3.4 URLconfs and Loose Coupling.......................................................................................................17 3.5 404 Errors.........................................................................................................................................17 3.6 Your Second View: Dynamic URLs................................................................................................18 3.6.1 A Word About Pretty URLs...................................................................................................19 3.6.2 Wildcard URLpatterns...........................................................................................................19 3.7 Django’s Pretty Error Pages.............................................................................................................21 3.8 What’s next?....................................................................................................................................23 4 The Django Template System.......................................................................................................................24 4.1 Template System Basics..................................................................................................................24 4.2 Using the Template System.............................................................................................................25 4.2.1 Creating Template Objects.....................................................................................................25 4.2.2 Rendering a Template............................................................................................................27 4.2.3 Multiple Contexts, Same Template........................................................................................28 4.2.4 Context Variable Lookup.......................................................................................................29 4.2.5 Playing with Context Objects.................................................................................................31 4.3 Basic Template Tags and Filters......................................................................................................32 4.3.1 Tags........................................................................................................................................32 4.3.2 Filters......................................................................................................................................36 4.4 Philosophies and Limitations...........................................................................................................37 4.5 Using Templates in Views...............................................................................................................38 4.6 Template Loading............................................................................................................................39 i The Django Book Table of Contents 4 The Django Template System 4.6.1 render_to_response()..............................................................................................................41 4.6.2 The locals() Trick...................................................................................................................42 4.6.3 Subdirectories in get_template()............................................................................................42 4.6.4 Theinclude Template Tag......................................................................................................43 4.7 Template Inheritance.......................................................................................................................44 4.8 What’s next?....................................................................................................................................47 5 Interacting with a Database: Models...........................................................................................................48 5.1 The “Dumb” Way to Do Database Queries in Views......................................................................48 5.2 The MTV Development Pattern.......................................................................................................49 5.3 Configuring the Database................................................................................................................50 5.4 Your First App.................................................................................................................................52 5.5 Defining Models in Python..............................................................................................................53 5.6 Your First Model.............................................................................................................................54 5.7 Installing the Model.........................................................................................................................55 5.8 Basic Data Access............................................................................................................................57 5.9 Adding Model String Representations.............................................................................................58 5.10 Inserting and Updating Data..........................................................................................................59 5.11 Selecting Objects...........................................................................................................................60 5.11.1 Filtering Data........................................................................................................................61 5.11.2 Retrieving Single Objects.....................................................................................................61 5.11.3 Ordering Data.......................................................................................................................62 5.11.4 Chaining Lookups................................................................................................................63 5.11.5 Slicing Data..........................................................................................................................63 5.12 Deleting Objects.............................................................................................................................64 5.13 Making Changes to a Database Schema........................................................................................64 5.13.1 Adding Fields.......................................................................................................................64 5.13.2 Removing Fields...................................................................................................................66 5.13.3 Removing Many-to-Many Fields.........................................................................................66 5.13.4 Removing Models................................................................................................................66 5.14 What’s Next?.................................................................................................................................67 6 The Django Administration Site...................................................................................................................68 6.1 Activating the Admin Interface.......................................................................................................68 6.2 Using the Admin Interface...............................................................................................................69 6.2.1 Users, Groups, and Permissions.............................................................................................76 6.3 Customizing the Admin Interface....................................................................................................77 6.4 Customizing the Admin Interface’s Look and Feel.........................................................................79 6.5 Customizing the Admin Index Page................................................................................................79 6.6 When and Why to Use the Admin Interface....................................................................................80 6.7 What’s Next?...................................................................................................................................80 7 Form Processing.............................................................................................................................................81 7.1 Search...............................................................................................................................................81 7.2 The “Perfect Form”..........................................................................................................................83 7.3 Creating a Feedback Form...............................................................................................................83 7.4 Processing the Submission...............................................................................................................86 7.5 Custom Validation Rules.................................................................................................................87 7.6 A Custom Look and Feel.................................................................................................................88 7.7 Creating Forms from Models...........................................................................................................89 7.8 What’s Next?...................................................................................................................................90 ii The Django Book Table of Contents 8 Advanced Views and URLconfs...................................................................................................................91 8.1 URLconf Tricks...............................................................................................................................91 8.1.1 Streamlining Function Imports...............................................................................................91 8.1.2 Using Multiple View Prefixes................................................................................................92 8.1.3 Special-Casing URLs in Debug Mode...................................................................................93 8.1.4 Using Named Groups.............................................................................................................93 8.1.5 Understanding the Matching/Grouping Algorithm................................................................95 8.1.6 Passing Extra Options to View Functions..............................................................................95 8.1.7 Using Default View Arguments.............................................................................................99 8.1.8 Special-Casing Views...........................................................................................................100 8.1.9 Capturing Text in URLs.......................................................................................................100 8.1.10 Determining What the URLconf Searches Against...........................................................101 8.2 Including Other URLconfs............................................................................................................102 8.2.1 How Captured Parameters Work with include()..................................................................102 8.2.2 How Extra URLconf Options Work with include().............................................................103 8.3 What’s Next?.................................................................................................................................104 9 Generic Views...............................................................................................................................................105 9.1 Using Generic Views.....................................................................................................................105 9.2 Generic Views of Objects..............................................................................................................106 9.3 Extending Generic Views..............................................................................................................107 9.3.1 Making “Friendly” Template Contexts................................................................................107 9.3.2 Adding Extra Context...........................................................................................................108 9.3.3 Viewing Subsets of Objects.................................................................................................109 9.3.4 Complex Filtering with Wrapper Functions.........................................................................110 9.3.5 Performing Extra Work........................................................................................................110 9.4 What’s Next?.................................................................................................................................111 10 Extending the Template Engine...............................................................................................................112 10.1 Template Language Review........................................................................................................112 10.2 RequestContext and Context Processors.....................................................................................112 10.2.1 django.core.context_processors.auth..................................................................................116 10.2.2 django.core.context_processors.debug...............................................................................116 10.2.3 django.core.context_processors.i18n.................................................................................116 10.2.4 django.core.context_processors.request.............................................................................116 10.2.5 Guidelines for Writing Your Own Context Processors......................................................116 10.3 Inside Template Loading.............................................................................................................117 10.4 Extending the Template System..................................................................................................118 10.4.1 Creating a Template Library..............................................................................................118 10.4.2 Writing Custom Template Filters.......................................................................................119 10.4.3 Writing Custom Template Tags.........................................................................................120 10.4.4 Shortcut for Simple Tags....................................................................................................124 10.4.5 Inclusion Tags....................................................................................................................125 10.5 Writing Custom Template Loaders..............................................................................................126 10.6 Using the Built-in Template Reference.......................................................................................127 10.7 Configuring the Template System in Standalone Mode..............................................................128 10.8 What’s Next.................................................................................................................................128 11 Generating Non-HTML Content..............................................................................................................129 11.1 The basics: views and MIME-types.............................................................................................129 11.2 Producing CSV............................................................................................................................130 11.3 Generating PDFs..........................................................................................................................131 iii The Django Book Table of Contents 11 Generating Non-HTML Content 11.3.1 Installing ReportLab...........................................................................................................131 11.3.2 Writing Your View.............................................................................................................131 11.3.3 Complex PDFs...................................................................................................................132 11.4 Other Possibilities........................................................................................................................133 11.5 The Syndication Feed Framework...............................................................................................133 11.5.1 Initialization........................................................................................................................134 11.5.2 A Simple Feed....................................................................................................................134 11.5.3 A More Complex Feed.......................................................................................................135 11.5.4 Specifying the Type of Feed..............................................................................................137 11.5.5 Enclosures..........................................................................................................................137 11.5.6 Language............................................................................................................................138 11.5.7 URLs..................................................................................................................................138 11.5.8 Publishing Atom and RSS Feeds in Tandem.....................................................................138 11.6 The Sitemap Framework..............................................................................................................139 11.6.1 Installation..........................................................................................................................139 11.6.2 Initialization........................................................................................................................139 11.6.3 Sitemap Classes..................................................................................................................140 11.6.4 Shortcuts.............................................................................................................................141 11.6.5 Creating a Sitemap Index...................................................................................................142 11.6.6 Pinging Google...................................................................................................................142 11.7 What’s Next?...............................................................................................................................143 12 Sessions, Users, and Registration.............................................................................................................144 12.1 Cookies........................................................................................................................................144 12.1.1 Getting and Setting Cookies...............................................................................................145 12.1.2 The Mixed Blessing of Cookies.........................................................................................146 12.2 Django’s Session Framework......................................................................................................146 12.2.1 Enabling Sessions...............................................................................................................147 12.2.2 Using Sessions in Views....................................................................................................147 12.2.3 Setting Test Cookies...........................................................................................................148 12.2.4 Using Sessions Outside of Views.......................................................................................149 12.2.5 When Sessions Are Saved..................................................................................................149 12.2.6 Browser-Length Sessions vs. Persistent Sessions..............................................................150 12.2.7 Other Session Settings........................................................................................................150 12.3 Users and Authentication.............................................................................................................151 12.3.1 Enabling Authentication Support.......................................................................................151 12.3.2 Using Users........................................................................................................................152 12.3.3 Logging In and Out............................................................................................................153 12.3.4 Limiting Access to Logged-in Users..................................................................................155 12.3.5 Limiting Access to Users Who Pass a Test........................................................................155 12.3.6 Managing Users, Permissions, and Groups........................................................................156 12.3.7 Using Authentication Data in Templates...........................................................................159 12.4 The Other Bits: Permissions, Groups, Messages, and Profiles....................................................160 12.4.1 Permissions.........................................................................................................................160 12.4.2 Groups................................................................................................................................161 12.4.3 Messages............................................................................................................................161 12.4.4 Profiles................................................................................................................................162 12.5 What’s Next.................................................................................................................................162 iv The Django Book Table of Contents 13 Caching.......................................................................................................................................................163 13.1 Setting Up the Cache...................................................................................................................163 13.1.1 Memcached........................................................................................................................163 13.1.2 Database Caching...............................................................................................................164 13.1.3 Filesystem Caching............................................................................................................165 13.1.4 Local-Memory Caching.....................................................................................................165 13.1.5 Simple Caching (for Development)...................................................................................165 13.1.6 Dummy Caching (for Development)..................................................................................165 13.1.7 CACHE_BACKEND Arguments......................................................................................166 13.2 The Per-Site Cache......................................................................................................................166 13.3 The Per-View Cache....................................................................................................................167 13.3.1 Specifying Per-View Cache in the URLconf.....................................................................168 13.4 The Low-Level Cache API..........................................................................................................168 13.5 Upstream Caches.........................................................................................................................169 13.5.1 Using Vary Headers...........................................................................................................170 13.5.2 Other Cache Headers..........................................................................................................171 13.6 Other Optimizations.....................................................................................................................172 13.7 Order of MIDDLEWARE_CLASSES........................................................................................172 13.8 What’s Next?...............................................................................................................................173 14 Other Contributed Subframeworks.........................................................................................................174 14.1 The Django Standard Library......................................................................................................174 14.2 Sites..............................................................................................................................................175 14.2.1 Scenario 1: Reusing Data on Multiple Sites.......................................................................175 14.2.2 Scenario 2: Storing Your Site Name/Domain in One Place...............................................175 14.2.3 How to Use the Sites Framework.......................................................................................175 14.2.4 The Sites Framework’s Capabilities...................................................................................176 14.2.5 CurrentSiteManager...........................................................................................................178 14.2.6 How Django Uses the Sites Framework.............................................................................179 14.3 Flatpages......................................................................................................................................180 14.3.1 Using Flatpages..................................................................................................................180 14.3.2 Adding, Changing, and Deleting Flatpages........................................................................181 14.3.3 Using Flatpage Templates..................................................................................................182 14.4 Redirects......................................................................................................................................182 14.4.1 Using the Redirects Framework.........................................................................................182 14.4.2 Adding, Changing, and Deleting Redirects........................................................................183 14.5 CSRF Protection..........................................................................................................................184 14.5.1 A Simple CSRF Example...................................................................................................184 14.5.2 A More Complex CSRF Example......................................................................................184 14.5.3 Preventing CSRF................................................................................................................184 14.6 Humanizing Data.........................................................................................................................186 14.6.1 apnumber............................................................................................................................186 14.6.2 intcomma............................................................................................................................186 14.6.3 intword................................................................................................................................186 14.6.4 ordinal.................................................................................................................................186 14.7 Markup Filters..............................................................................................................................187 14.8 What’s Next?...............................................................................................................................187 15 Middleware.................................................................................................................................................188 15.1 What’s Middleware?....................................................................................................................188 15.2 Middleware Installation...............................................................................................................189 15.3 Middleware Methods...................................................................................................................189 v The Django Book Table of Contents 15 Middleware 15.3.1 Initializer: __init__(self).....................................................................................................189 15.3.2 Request Preprocessor: process_request(self, request)........................................................190 15.3.3 View Preprocessor: process_view(self, request, view, args, kwargs)................................190 15.3.4 Response Postprocessor: process_response(self, request, response).................................190 15.3.5 Exception Postprocessor: process_exception(self, request, exception).............................191 15.4 Built-in Middleware.....................................................................................................................191 15.4.1 Authentication Support Middleware..................................................................................191 15.4.2 “Common” Middleware.....................................................................................................191 15.4.3 Compression Middleware...................................................................................................192 15.4.4 Conditional GET Middleware............................................................................................192 15.4.5 Reverse Proxy Support (X-Forwarded-For Middleware)..................................................192 15.4.6 Session Support Middleware..............................................................................................193 15.4.7 Sitewide Cache Middleware...............................................................................................193 15.4.8 Transaction Middleware.....................................................................................................193 15.4.9 “X-View” Middleware.......................................................................................................193 15.5 What’s Next?...............................................................................................................................193 16 Integrating with Legacy Databases and Applications............................................................................194 16.1 Integrating with a Legacy Database.............................................................................................194 16.1.1 Usinginspectdb..................................................................................................................194 16.1.2 Cleaning Up Generated Models.........................................................................................194 16.2 Integrating with an Authentication System..................................................................................195 16.2.1 Specifying Authentication Back-ends................................................................................196 16.2.2 Writing an Authentication Back-end..................................................................................196 16.3 Integrating with Legacy Web Applications.................................................................................197 16.4 What’s Next?...............................................................................................................................198 17 Extending Django’s Admin Interface......................................................................................................199 17.1 The Zen of Admin........................................................................................................................200 17.1.1 “Trusted users …”..............................................................................................................200 17.1.2 “… editing …”...................................................................................................................200 17.1.3 “… structured content”.......................................................................................................200 17.1.4 Full Stop.............................................................................................................................200 17.2 Customizing Admin Templates...................................................................................................201 17.2.1 Custom Model Templates..................................................................................................202 17.2.2 Custom JavaScript..............................................................................................................203 17.3 Creating Custom Admin Views...................................................................................................203 17.4 Overriding Built-in Views...........................................................................................................205 17.5 What’s Next?...............................................................................................................................206 18 Internationalization...................................................................................................................................207 18.1 Specifying Translation Strings in Python Code...........................................................................208 18.1.1 Standard Translation Functions..........................................................................................208 18.1.2 Marking Strings As No-op.................................................................................................209 18.1.3 Lazy Translation.................................................................................................................209 18.1.4 Pluralization........................................................................................................................209 18.2 Specifying Translation Strings in Template Code.......................................................................210 18.3 Creating Language Files..............................................................................................................211 18.3.1 Creating Message Files......................................................................................................211 18.3.2 Compiling Message Files...................................................................................................213 18.4 How Django Discovers Language Preference.............................................................................213 vi The Django Book Table of Contents 18 Internationalization 18.5 The set_language Redirect View.................................................................................................215 18.6 Using Translations in Your Own Projects...................................................................................215 18.7 Translations and JavaScript.........................................................................................................216 18.7.1 The javascript_catalog View..............................................................................................216 18.7.2 Using the JavaScript Translation Catalog..........................................................................217 18.7.3 Creating JavaScript Translation Catalogs..........................................................................218 18.8 Notes for Users Familiar withgettext..........................................................................................218 18.9 What’s Next?...............................................................................................................................218 19 Security.......................................................................................................................................................219 19.1 The Theme of Web Security........................................................................................................219 19.2 SQL Injection...............................................................................................................................219 19.2.1 The Solution.......................................................................................................................220 19.3 Cross-Site Scripting (XSS)..........................................................................................................221 19.3.1 The Solution.......................................................................................................................222 19.4 Cross-Site Request Forgery.........................................................................................................222 19.5 Session Forging/Hijacking...........................................................................................................222 19.5.1 The Solution.......................................................................................................................223 19.6 Email Header Injection................................................................................................................224 19.6.1 The Solution.......................................................................................................................224 19.7 Directory Traversal......................................................................................................................224 19.7.1 The Solution.......................................................................................................................225 19.8 Exposed Error Messages..............................................................................................................225 19.8.1 The Solution.......................................................................................................................226 19.9 A Final Word on Security............................................................................................................226 19.10 What’s Next...............................................................................................................................226 20 Deploying Django.......................................................................................................................................227 20.1 Shared Nothing............................................................................................................................227 20.2 A Note on Personal Preferences..................................................................................................228 20.3 Using Django with Apache and mod_python..............................................................................229 20.3.1 Basic Configuration............................................................................................................229 20.3.2 Running Multiple Django Installations on the Same Apache Instance..............................230 20.3.3 Running a Development Server with mod_python............................................................231 20.3.4 Serving Django and Media Files from the Same Apache Instance....................................231 20.3.5 Error Handling....................................................................................................................232 20.3.6 Handling a Segmentation Fault..........................................................................................232 20.4 Using Django with FastCGI........................................................................................................233 20.4.1 FastCGI Overview..............................................................................................................233 20.4.2 Running Your FastCGI Server...........................................................................................233 20.4.3 Using Django with Apache and FastCGI...........................................................................234 20.4.4 FastCGI and lighttpd..........................................................................................................235 20.4.5 Running Django on a Shared-Hosting Provider with Apache...........................................236 20.5 Scaling.........................................................................................................................................237 20.5.1 Running on a Single Server................................................................................................237 20.5.2 Separating Out the Database Server...................................................................................238 20.5.3 Running a Separate Media Server......................................................................................239 20.5.4 Implementing Load Balancing and Redundancy...............................................................239 20.5.5 Going Big...........................................................................................................................241 20.6 Performance Tuning.....................................................................................................................241 20.6.1 There’s No Such Thing As Too Much RAM.....................................................................242 vii The Django Book Table of Contents 20 Deploying Django 20.6.2 Turn Off Keep-Alive..........................................................................................................242 20.6.3 Use memcached..................................................................................................................242 20.6.4 Use memcached Often........................................................................................................242 20.6.5 Join the Conversation.........................................................................................................242 20.7 What’s Next?...............................................................................................................................243 21 Appendix A: Case Studies.........................................................................................................................244 21.1 Cast of Characters........................................................................................................................244 21.2 Why Django?...............................................................................................................................245 21.3 Getting Started.............................................................................................................................246 21.4 Porting Existing Code..................................................................................................................246 21.5 How Did It Go?............................................................................................................................247 21.6 Team Structure.............................................................................................................................248 21.7 Deployment..................................................................................................................................249 22 Appendix B: Model Definition Reference................................................................................................251 22.1 Fields............................................................................................................................................251 22.1.1 AutoField............................................................................................................................251 22.1.2 BooleanField......................................................................................................................252 22.1.3 CharField............................................................................................................................252 22.1.4 CommaSeparatedIntegerField............................................................................................252 22.1.5 DateField............................................................................................................................252 22.1.6 DateTimeField....................................................................................................................252 22.1.7 EmailField..........................................................................................................................252 22.1.8 FileField..............................................................................................................................252 22.1.9 FilePathField......................................................................................................................253 22.1.10 FloatField..........................................................................................................................254 22.1.11 ImageField........................................................................................................................254 22.1.12 IntegerField......................................................................................................................254 22.1.13 IPAddressField.................................................................................................................254 22.1.14 NullBooleanField.............................................................................................................254 22.1.15 PhoneNumberField...........................................................................................................254 22.1.16 PositiveIntegerField..........................................................................................................255 22.1.17 PositiveSmallIntegerField................................................................................................255 22.1.18 SlugField..........................................................................................................................255 22.1.19 SmallIntegerField.............................................................................................................255 22.1.20 TextField..........................................................................................................................255 22.1.21 TimeField.........................................................................................................................255 22.1.22 URLField..........................................................................................................................255 22.1.23 USStateField.....................................................................................................................255 22.1.24 XMLField.........................................................................................................................256 22.2 Universal Field Options...............................................................................................................256 22.2.1 null......................................................................................................................................256 22.2.2 blank...................................................................................................................................256 22.2.3 choices................................................................................................................................256 22.2.4 db_column..........................................................................................................................257 22.2.5 db_index.............................................................................................................................257 22.2.6 editable...............................................................................................................................257 22.2.7 help_text.............................................................................................................................257 22.2.8 primary_key........................................................................................................................257 22.2.9 radio_admin........................................................................................................................258 viii The Django Book Table of Contents 22 Appendix B: Model Definition Reference 22.2.10 unique...............................................................................................................................258 22.2.11 unique_for_date................................................................................................................258 22.2.12 unique_for_month............................................................................................................258 22.2.13 unique_for_year................................................................................................................258 22.2.14 verbose_name...................................................................................................................258 22.3 Relationships................................................................................................................................259 22.3.1 Many-to-One Relationships...............................................................................................259 22.3.2 Many-to-Many Relationships.............................................................................................261 22.4 Model Metadata Options..............................................................................................................262 22.4.1 db_table..............................................................................................................................262 22.4.2 get_latest_by.......................................................................................................................263 22.4.3 order_with_respect_to........................................................................................................263 22.4.4 ordering..............................................................................................................................263 22.4.5 permissions.........................................................................................................................264 22.4.6 unique_together..................................................................................................................264 22.4.7 verbose_name.....................................................................................................................264 22.4.8 verbose_name_plural..........................................................................................................265 22.5 Managers......................................................................................................................................265 22.5.1 Manager Names..................................................................................................................265 22.5.2 Custom Managers...............................................................................................................265 22.6 Model Methods............................................................................................................................267 22.6.1 __str__................................................................................................................................268 22.6.2 get_absolute_url.................................................................................................................268 22.6.3 Executing Custom SQL......................................................................................................269 22.6.4 Overriding Default Model Methods...................................................................................270 22.7 Admin Options.............................................................................................................................270 22.7.1 date_hierarchy....................................................................................................................270 22.7.2 fields...................................................................................................................................271 22.7.3 js.........................................................................................................................................272 22.7.4 list_display..........................................................................................................................272 22.7.5 list_display_links................................................................................................................273 22.7.6 list_filter.............................................................................................................................274 22.7.7 list_per_page......................................................................................................................274 22.7.8 list_select_related...............................................................................................................274 22.7.9 ordering..............................................................................................................................274 22.7.10 save_as..............................................................................................................................275 22.7.11 save_on_top......................................................................................................................275 22.7.12 search_fields.....................................................................................................................275 23 Appendix C: Database API Reference.....................................................................................................277 23.1 Creating Objects...........................................................................................................................277 23.1.1 What Happens When You Save?.......................................................................................278 23.1.2 Autoincrementing Primary Keys........................................................................................278 23.2 Saving Changes to Objects..........................................................................................................279 23.3 Retrieving Objects.......................................................................................................................279 23.4 Caching and QuerySets................................................................................................................280 23.5 Filtering Objects..........................................................................................................................281 23.5.1 Chaining Filters..................................................................................................................281 23.5.2 Limiting QuerySets............................................................................................................282 23.5.3 Query Methods That Return New QuerySets.....................................................................283 23.5.4 QuerySet Methods That Do Not Return QuerySets...........................................................286 ix
Description: