Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
Django 6.2.dev20260711194118 documentation
Django 6.2.dev20260711194118 documentation
  • Django documentation
  • Getting started
    • Django at a glance
    • Quick install guide
    • Writing your first Django app, part 1
    • Writing your first Django app, part 2
    • Writing your first Django app, part 3
    • Writing your first Django app, part 4
    • Writing your first Django app, part 5
    • Writing your first Django app, part 6
    • Writing your first Django app, part 7
    • Writing your first Django app, part 8
    • Advanced tutorial: How to write reusable apps
    • What to read next
    • Writing your first contribution for Django
  • Using Django
    • How to install Django
    • Models and databases
      • Models
      • Making queries
      • Fetch modes
      • Aggregation
      • Search
      • Managers
      • Performing raw SQL queries
      • Database transactions
      • Multiple databases
      • Tablespaces
      • Database access optimization
      • Database instrumentation
      • Fixtures
      • Examples of model relationship API usage
        • Many-to-many relationships
        • Many-to-one relationships
        • One-to-one relationships
    • Handling HTTP requests
      • URL dispatcher
      • Writing views
      • View decorators
      • File Uploads
      • Django shortcut functions
      • Generic views
      • Middleware
      • How to use sessions
    • Working with forms
      • Formsets
      • Creating forms from models
      • Form Assets (the Media class)
    • Templates
    • Class-based views
      • Introduction to class-based views
      • Built-in class-based generic views
      • Form handling with class-based views
      • Using mixins with class-based views
    • Migrations
    • Managing files
    • Testing in Django
      • Writing and running tests
      • Testing tools
      • Advanced testing topics
    • User authentication in Django
      • Using the Django authentication system
      • Password management in Django
      • Customizing authentication in Django
    • Django’s cache framework
    • Conditional View Processing
    • Composite primary keys
    • Cryptographic signing
    • Sending email
    • Internationalization and localization
      • Translation
      • Format localization
      • Time zones
    • Logging
    • Pagination
    • Security in Django
    • Performance and optimization
    • Serializing Django objects
    • Django settings
    • Signals
    • System check framework
    • Asynchronous support
    • Django’s Tasks framework
  • How-to guides
    • How to provide initial data for models
    • How to integrate Django with a legacy database
    • How to create custom model fields
    • How to create database migrations
    • How to write custom lookups
    • How to create CSV output
    • How to create PDF files
    • How to override templates
    • How to implement a custom template backend
    • How to create custom template tags and filters
    • How to manage static files (e.g. images, JavaScript, CSS)
    • How to configure and use logging
    • How to manage error reporting
    • How to delete a Django application
    • How to upgrade Django to a newer version
    • How to install Django on Windows
    • How to deploy Django
      • How to deploy with WSGI
        • How to use Django with Granian
        • How to use Django with Gunicorn
        • How to use Django with uWSGI
        • How to use Django with Apache and mod_wsgi
        • How to authenticate against Django’s user database from Apache
      • How to deploy with ASGI
        • How to use Django with Daphne
        • How to use Django with Granian
        • How to use Django with Hypercorn
        • How to use Django with Uvicorn
      • Deployment checklist
    • How to deploy static files
    • How to authenticate using REMOTE_USER
    • How to use Django’s Content Security Policy
    • How to use Django’s CSRF protection
    • How to write a custom storage class
    • How to create custom django-admin commands
    • How to customize the shell command
    • Migrating email to mailers
  • Django FAQ
    • FAQ: General
    • FAQ: Installation
    • FAQ: Using Django
    • FAQ: Getting Help
    • FAQ: Databases and models
    • FAQ: The admin
    • FAQ: Contributing code
    • Troubleshooting
  • API Reference
    • Applications
    • System check framework
    • Built-in class-based views API
      • Base views
      • Generic display views
      • Generic editing views
      • Generic date views
      • Class-based views mixins
        • Simple mixins
        • Single object mixins
        • Multiple object mixins
        • Editing mixins
        • Date-based mixins
      • Class-based generic views - flattened index
    • Clickjacking Protection
    • contrib packages
      • The Django admin site
        • Admin actions
        • ModelAdmin List Filters
        • The Django admin documentation generator
        • JavaScript customizations in the admin
      • django.contrib.auth
      • The contenttypes framework
      • The flatpages app
      • GeoDjango
        • GeoDjango Tutorial
        • GeoDjango Installation
          • Installing Geospatial libraries
          • Installing PostGIS
          • Installing SpatiaLite
        • GeoDjango Model API
        • GeoDjango Database API
        • GeoDjango Forms API
        • GIS QuerySet API Reference
        • Geographic Database Functions
        • Measurement Objects
        • GEOS API
        • GDAL API
        • Geolocation with GeoIP2
        • GeoDjango Utilities
          • LayerMapping data import utility
          • OGR Inspection
          • GeoJSON Serializer
        • GeoDjango Management Commands
        • GeoDjango’s admin site
        • Geographic Feeds
        • Geographic Sitemaps
        • Testing GeoDjango apps
        • Deploying GeoDjango
      • django.contrib.humanize
      • The messages framework
      • django.contrib.postgres
        • PostgreSQL specific aggregation functions
        • PostgreSQL specific database constraints
        • PostgreSQL specific query expressions
        • PostgreSQL specific model fields
        • PostgreSQL specific form fields and widgets
        • PostgreSQL specific database functions
        • PostgreSQL specific model indexes
        • PostgreSQL specific lookups
        • Database migration operations
        • Full text search
        • Validators
      • The redirects app
      • The sitemap framework
      • The “sites” framework
      • The staticfiles app
      • The syndication feed framework
    • Content Security Policy
    • Cross Site Request Forgery protection
    • Databases
    • django-admin and manage.py
    • Running management commands from your code
    • Django Exceptions
    • File handling
      • The File object
      • File storage API
      • Uploaded Files and Upload Handlers
    • Forms
      • The Forms API
      • Form fields
      • Model forms
      • Formset Functions
      • The form rendering API
      • Widgets
      • Form and field validation
    • Logging
    • Middleware
    • Migration Operations
    • Models
      • Model field reference
      • Field attribute reference
      • Model index reference
      • Constraints reference
      • Model _meta API
      • Related objects reference
      • Model class reference
      • Model Meta options
      • Model instance reference
      • QuerySet API reference
      • Lookup API reference
      • Query Expressions
      • Conditional Expressions
      • Database Functions
    • Paginator
    • Request and response objects
    • SchemaEditor
    • Settings
    • Signals
    • Tasks
    • Templates
      • The Django template language
      • Built-in template tags and filters
      • The Django template language: for Python programmers
    • TemplateResponse and SimpleTemplateResponse
    • Unicode data
    • django.urls utility functions
    • django.urls functions for use in URLconfs
    • django.conf.urls functions for use in URLconfs
    • Django Utils
    • Validators
    • Built-in Views
  • Meta-documentation and miscellany
    • API stability
    • Design philosophies
    • Third-party distributions of Django
  • Glossary
  • Release notes
    • Django 6.2 release notes - UNDER DEVELOPMENT
    • Django 6.1 release notes - UNDER DEVELOPMENT
    • Django 6.0.8 release notes
    • Django 6.0.7 release notes
    • Django 6.0.6 release notes
    • Django 6.0.5 release notes
    • Django 6.0.4 release notes
    • Django 6.0.3 release notes
    • Django 6.0.2 release notes
    • Django 6.0.1 release notes
    • Django 6.0 release notes
    • Django 5.2.16 release notes
    • Django 5.2.15 release notes
    • Django 5.2.14 release notes
    • Django 5.2.13 release notes
    • Django 5.2.12 release notes
    • Django 5.2.11 release notes
    • Django 5.2.10 release notes
    • Django 5.2.9 release notes
    • Django 5.2.8 release notes
    • Django 5.2.7 release notes
    • Django 5.2.6 release notes
    • Django 5.2.5 release notes
    • Django 5.2.4 release notes
    • Django 5.2.3 release notes
    • Django 5.2.2 release notes
    • Django 5.2.1 release notes
    • Django 5.2 release notes
    • Django 5.1.15 release notes
    • Django 5.1.14 release notes
    • Django 5.1.13 release notes
    • Django 5.1.12 release notes
    • Django 5.1.11 release notes
    • Django 5.1.10 release notes
    • Django 5.1.9 release notes
    • Django 5.1.8 release notes
    • Django 5.1.7 release notes
    • Django 5.1.6 release notes
    • Django 5.1.5 release notes
    • Django 5.1.4 release notes
    • Django 5.1.3 release notes
    • Django 5.1.2 release notes
    • Django 5.1.1 release notes
    • Django 5.1 release notes
    • Django 5.0.14 release notes
    • Django 5.0.13 release notes
    • Django 5.0.12 release notes
    • Django 5.0.11 release notes
    • Django 5.0.10 release notes
    • Django 5.0.9 release notes
    • Django 5.0.8 release notes
    • Django 5.0.7 release notes
    • Django 5.0.6 release notes
    • Django 5.0.5 release notes
    • Django 5.0.4 release notes
    • Django 5.0.3 release notes
    • Django 5.0.2 release notes
    • Django 5.0.1 release notes
    • Django 5.0 release notes
    • Django 4.2.30 release notes
    • Django 4.2.29 release notes
    • Django 4.2.28 release notes
    • Django 4.2.27 release notes
    • Django 4.2.26 release notes
    • Django 4.2.25 release notes
    • Django 4.2.24 release notes
    • Django 4.2.23 release notes
    • Django 4.2.22 release notes
    • Django 4.2.21 release notes
    • Django 4.2.20 release notes
    • Django 4.2.19 release notes
    • Django 4.2.18 release notes
    • Django 4.2.17 release notes
    • Django 4.2.16 release notes
    • Django 4.2.15 release notes
    • Django 4.2.14 release notes
    • Django 4.2.13 release notes
    • Django 4.2.12 release notes
    • Django 4.2.11 release notes
    • Django 4.2.10 release notes
    • Django 4.2.9 release notes
    • Django 4.2.8 release notes
    • Django 4.2.7 release notes
    • Django 4.2.6 release notes
    • Django 4.2.5 release notes
    • Django 4.2.4 release notes
    • Django 4.2.3 release notes
    • Django 4.2.2 release notes
    • Django 4.2.1 release notes
    • Django 4.2 release notes
    • Django 4.1.13 release notes
    • Django 4.1.12 release notes
    • Django 4.1.11 release notes
    • Django 4.1.10 release notes
    • Django 4.1.9 release notes
    • Django 4.1.8 release notes
    • Django 4.1.7 release notes
    • Django 4.1.6 release notes
    • Django 4.1.5 release notes
    • Django 4.1.4 release notes
    • Django 4.1.3 release notes
    • Django 4.1.2 release notes
    • Django 4.1.1 release notes
    • Django 4.1 release notes
    • Django 4.0.10 release notes
    • Django 4.0.9 release notes
    • Django 4.0.8 release notes
    • Django 4.0.7 release notes
    • Django 4.0.6 release notes
    • Django 4.0.5 release notes
    • Django 4.0.4 release notes
    • Django 4.0.3 release notes
    • Django 4.0.2 release notes
    • Django 4.0.1 release notes
    • Django 4.0 release notes
    • Django 3.2.25 release notes
    • Django 3.2.24 release notes
    • Django 3.2.23 release notes
    • Django 3.2.22 release notes
    • Django 3.2.21 release notes
    • Django 3.2.20 release notes
    • Django 3.2.19 release notes
    • Django 3.2.18 release notes
    • Django 3.2.17 release notes
    • Django 3.2.16 release notes
    • Django 3.2.15 release notes
    • Django 3.2.14 release notes
    • Django 3.2.13 release notes
    • Django 3.2.12 release notes
    • Django 3.2.11 release notes
    • Django 3.2.10 release notes
    • Django 3.2.9 release notes
    • Django 3.2.8 release notes
    • Django 3.2.7 release notes
    • Django 3.2.6 release notes
    • Django 3.2.5 release notes
    • Django 3.2.4 release notes
    • Django 3.2.3 release notes
    • Django 3.2.2 release notes
    • Django 3.2.1 release notes
    • Django 3.2 release notes
    • Django 3.1.14 release notes
    • Django 3.1.13 release notes
    • Django 3.1.12 release notes
    • Django 3.1.11 release notes
    • Django 3.1.10 release notes
    • Django 3.1.9 release notes
    • Django 3.1.8 release notes
    • Django 3.1.7 release notes
    • Django 3.1.6 release notes
    • Django 3.1.5 release notes
    • Django 3.1.4 release notes
    • Django 3.1.3 release notes
    • Django 3.1.2 release notes
    • Django 3.1.1 release notes
    • Django 3.1 release notes
    • Django 3.0.14 release notes
    • Django 3.0.13 release notes
    • Django 3.0.12 release notes
    • Django 3.0.11 release notes
    • Django 3.0.10 release notes
    • Django 3.0.9 release notes
    • Django 3.0.8 release notes
    • Django 3.0.7 release notes
    • Django 3.0.6 release notes
    • Django 3.0.5 release notes
    • Django 3.0.4 release notes
    • Django 3.0.3 release notes
    • Django 3.0.2 release notes
    • Django 3.0.1 release notes
    • Django 3.0 release notes
    • Django 2.2.28 release notes
    • Django 2.2.27 release notes
    • Django 2.2.26 release notes
    • Django 2.2.25 release notes
    • Django 2.2.24 release notes
    • Django 2.2.23 release notes
    • Django 2.2.22 release notes
    • Django 2.2.21 release notes
    • Django 2.2.20 release notes
    • Django 2.2.19 release notes
    • Django 2.2.18 release notes
    • Django 2.2.17 release notes
    • Django 2.2.16 release notes
    • Django 2.2.15 release notes
    • Django 2.2.14 release notes
    • Django 2.2.13 release notes
    • Django 2.2.12 release notes
    • Django 2.2.11 release notes
    • Django 2.2.10 release notes
    • Django 2.2.9 release notes
    • Django 2.2.8 release notes
    • Django 2.2.7 release notes
    • Django 2.2.6 release notes
    • Django 2.2.5 release notes
    • Django 2.2.4 release notes
    • Django 2.2.3 release notes
    • Django 2.2.2 release notes
    • Django 2.2.1 release notes
    • Django 2.2 release notes
    • Django 2.1.15 release notes
    • Django 2.1.14 release notes
    • Django 2.1.13 release notes
    • Django 2.1.12 release notes
    • Django 2.1.11 release notes
    • Django 2.1.10 release notes
    • Django 2.1.9 release notes
    • Django 2.1.8 release notes
    • Django 2.1.7 release notes
    • Django 2.1.6 release notes
    • Django 2.1.5 release notes
    • Django 2.1.4 release notes
    • Django 2.1.3 release notes
    • Django 2.1.2 release notes
    • Django 2.1.1 release notes
    • Django 2.1 release notes
    • Django 2.0.13 release notes
    • Django 2.0.12 release notes
    • Django 2.0.11 release notes
    • Django 2.0.10 release notes
    • Django 2.0.9 release notes
    • Django 2.0.8 release notes
    • Django 2.0.7 release notes
    • Django 2.0.6 release notes
    • Django 2.0.5 release notes
    • Django 2.0.4 release notes
    • Django 2.0.3 release notes
    • Django 2.0.2 release notes
    • Django 2.0.1 release notes
    • Django 2.0 release notes
    • Django 1.11.29 release notes
    • Django 1.11.28 release notes
    • Django 1.11.27 release notes
    • Django 1.11.26 release notes
    • Django 1.11.25 release notes
    • Django 1.11.24 release notes
    • Django 1.11.23 release notes
    • Django 1.11.22 release notes
    • Django 1.11.21 release notes
    • Django 1.11.20 release notes
    • Django 1.11.19 release notes
    • Django 1.11.18 release notes
    • Django 1.11.17 release notes
    • Django 1.11.16 release notes
    • Django 1.11.15 release notes
    • Django 1.11.14 release notes
    • Django 1.11.13 release notes
    • Django 1.11.12 release notes
    • Django 1.11.11 release notes
    • Django 1.11.10 release notes
    • Django 1.11.9 release notes
    • Django 1.11.8 release notes
    • Django 1.11.7 release notes
    • Django 1.11.6 release notes
    • Django 1.11.5 release notes
    • Django 1.11.4 release notes
    • Django 1.11.3 release notes
    • Django 1.11.2 release notes
    • Django 1.11.1 release notes
    • Django 1.11 release notes
    • Django 1.10.8 release notes
    • Django 1.10.7 release notes
    • Django 1.10.6 release notes
    • Django 1.10.5 release notes
    • Django 1.10.4 release notes
    • Django 1.10.3 release notes
    • Django 1.10.2 release notes
    • Django 1.10.1 release notes
    • Django 1.10 release notes
    • Django 1.9.13 release notes
    • Django 1.9.12 release notes
    • Django 1.9.11 release notes
    • Django 1.9.10 release notes
    • Django 1.9.9 release notes
    • Django 1.9.8 release notes
    • Django 1.9.7 release notes
    • Django 1.9.6 release notes
    • Django 1.9.5 release notes
    • Django 1.9.4 release notes
    • Django 1.9.3 release notes
    • Django 1.9.2 release notes
    • Django 1.9.1 release notes
    • Django 1.9 release notes
    • Django 1.8.19 release notes
    • Django 1.8.18 release notes
    • Django 1.8.17 release notes
    • Django 1.8.16 release notes
    • Django 1.8.15 release notes
    • Django 1.8.14 release notes
    • Django 1.8.13 release notes
    • Django 1.8.12 release notes
    • Django 1.8.11 release notes
    • Django 1.8.10 release notes
    • Django 1.8.9 release notes
    • Django 1.8.8 release notes
    • Django 1.8.7 release notes
    • Django 1.8.6 release notes
    • Django 1.8.5 release notes
    • Django 1.8.4 release notes
    • Django 1.8.3 release notes
    • Django 1.8.2 release notes
    • Django 1.8.1 release notes
    • Django 1.8 release notes
    • Django 1.7.11 release notes
    • Django 1.7.10 release notes
    • Django 1.7.9 release notes
    • Django 1.7.8 release notes
    • Django 1.7.7 release notes
    • Django 1.7.6 release notes
    • Django 1.7.5 release notes
    • Django 1.7.4 release notes
    • Django 1.7.3 release notes
    • Django 1.7.2 release notes
    • Django 1.7.1 release notes
    • Django 1.7 release notes
    • Django 1.6.11 release notes
    • Django 1.6.10 release notes
    • Django 1.6.9 release notes
    • Django 1.6.8 release notes
    • Django 1.6.7 release notes
    • Django 1.6.6 release notes
    • Django 1.6.5 release notes
    • Django 1.6.4 release notes
    • Django 1.6.3 release notes
    • Django 1.6.2 release notes
    • Django 1.6.1 release notes
    • Django 1.6 release notes
    • Django 1.5.12 release notes
    • Django 1.5.11 release notes
    • Django 1.5.10 release notes
    • Django 1.5.9 release notes
    • Django 1.5.8 release notes
    • Django 1.5.7 release notes
    • Django 1.5.6 release notes
    • Django 1.5.5 release notes
    • Django 1.5.4 release notes
    • Django 1.5.3 release notes
    • Django 1.5.2 release notes
    • Django 1.5.1 release notes
    • Django 1.5 release notes
    • Django 1.4.22 release notes
    • Django 1.4.21 release notes
    • Django 1.4.20 release notes
    • Django 1.4.19 release notes
    • Django 1.4.18 release notes
    • Django 1.4.17 release notes
    • Django 1.4.16 release notes
    • Django 1.4.15 release notes
    • Django 1.4.14 release notes
    • Django 1.4.13 release notes
    • Django 1.4.12 release notes
    • Django 1.4.11 release notes
    • Django 1.4.10 release notes
    • Django 1.4.9 release notes
    • Django 1.4.8 release notes
    • Django 1.4.7 release notes
    • Django 1.4.6 release notes
    • Django 1.4.5 release notes
    • Django 1.4.4 release notes
    • Django 1.4.3 release notes
    • Django 1.4.2 release notes
    • Django 1.4.1 release notes
    • Django 1.4 release notes
    • Django 1.3.7 release notes
    • Django 1.3.6 release notes
    • Django 1.3.5 release notes
    • Django 1.3.4 release notes
    • Django 1.3.3 release notes
    • Django 1.3.2 release notes
    • Django 1.3.1 release notes
    • Django 1.3 release notes
    • Django 1.2.7 release notes
    • Django 1.2.6 release notes
    • Django 1.2.5 release notes
    • Django 1.2.4 release notes
    • Django 1.2.3 release notes
    • Django 1.2.2 release notes
    • Django 1.2.1 release notes
    • Django 1.2 release notes
    • Django 1.1.4 release notes
    • Django 1.1.3 release notes
    • Django 1.1.2 release notes
    • Django 1.1 release notes
    • Django 1.0.2 release notes
    • Django 1.0.1 release notes
    • Django 1.0 release notes
      • Porting your apps from Django 0.96 to 1.0
    • Django version 0.96 release notes
    • Django version 0.95 release notes
    • Archive of security issues
  • Django internals
    • Contributing to Django
      • An overview of the contributing process and what's involved.
      • Contributing code
        • Submitting contributions
        • Unit tests
        • Working with Git and GitHub
        • Coding style
        • JavaScript code
        • Accessibility
        • Committing code
      • Writing documentation
      • Localizing Django
      • Reporting bugs and requesting features
      • Triaging tickets
    • Mailing lists and Forum
    • Organization of the Django Project
    • Django’s security policies
    • Django’s release process
    • Django Deprecation Timeline
    • The Django source code repository
    • How to release Django
Back to top
View this page

Examples of model relationship API usage¶

  • Many-to-many relationships
  • Many-to-one relationships
  • One-to-one relationships
Next
Many-to-many relationships
Previous
Fixtures
Copyright © Django Software Foundation and contributors
Made with Sphinx and @pradyunsg's Furo
Last updated on Jul 11, 2026