How to use Django Field Choices ? Last Updated : 17 May, 2025 Comments Improve Suggest changes Like Article Like Report Django’s choices option lets you limit a model field to a fixed set of values. It helps keep your data clean and consistent, and automatically shows a dropdown menu in forms and the admin instead of a text box.Choices are defined as pairs: the first value is saved to the database, and the second is shown to users. For example:# Format: (value_saved, label_shown)[ ('A', 'Option A'), ('B', 'Option B'),]Features of Using ChoicesEnforces data validation.Restricts user input to predefined values.Automatically renders a <select> dropdown in Django forms and admin.Improves consistency and user experience.Example: Semester ChoicesSuppose we want to restrict a student's semester field to only allow values from 1 to 8. Here’s how we can implement this in Django:Step 1: Define the Choices (in models.py) Python from django.db import models SEMESTER_CHOICES = [ ("1", "1"), ("2", "2"), ("3", "3"), ("4", "4"), ("5", "5"), ("6", "6"), ("7", "7"), ("8", "8"), ] Step 2: Use Choices in the Model Field (in models.py) Python class Student(models.Model): semester = models.CharField( max_length=2, choices=SEMESTER_CHOICES, default="1" ) def __str__(self): return f"Semester: {self.get_semester_display()}" Explanation:choices=SEMESTER_CHOICES restricts the field to the listed values.default="1" sets the default semester to 1.get_semester_display() retrieves the human-readable value.Let us check in admin panel how semester is created. Grouping ChoicesDjango also supports grouped choices for better organization. Each group has a label and a set of related options.In your app's model.py we can add the following code for demonstration:MEDIA_CHOICES = [ ('Audio', [ ('vinyl', 'Vinyl'), ('cd', 'CD'), ]), ('Video', [ ('vhs', 'VHS Tape'), ('dvd', 'DVD'), ]), ('unknown', 'Unknown'),]We can then use it like this: Python class Media(models.Model): media_type = models.CharField( max_length=10, choices=MEDIA_CHOICES, default='unknown' ) def __str__(self): return f"{self.get_media_type_display()}" Grouped choices improve UX in long lists by categorizing options under headings.Output in the admin panel:Snapshot of the dropdown menu of Media Comment More infoAdvertise with us N NaveenArora Follow Improve Article Tags : Python Python Django Django-models Practice Tags : python Similar Reads Django Models A Django model is a Python class that represents a database table. Models make it easy to define and work with database tables using simple Python code. Instead of writing complex SQL queries, we use Djangoâs built-in ORM (Object Relational Mapper), which allows us to interact with the database in a 8 min read Django ORM - Inserting, Updating & Deleting Data Django's Object-Relational Mapping (ORM) is one of the key features that simplifies interaction with the database. It allows developers to define their database schema in Python classes and manage data without writing raw SQL queries. The Django ORM bridges the gap between Python objects and databas 4 min read Django Basic App Model - Makemigrations and Migrate Django's Object-Relational Mapping (ORM) simplifies database interactions by mapping Python objects to database tables. One of the key features of Django's ORM is migrations, which allow you to manage changes to the database schema.What are Migrations in Django?Migrations are files that store instru 4 min read Add the slug field inside Django Model The slug field within Django models is a pivotal step for improving the structure and readability of URLs in web applications. This addition allows developers to automatically generate URL-friendly slugs based on titles, enhancing user experience and search engine optimization (SEO). By implementing 4 min read Intermediate fields in Django - Python Prerequisite: Django models, Relational fields in DjangoIn Django, a many-to-many relationship is used when instances of one model can be associated with multiple instances of another model and vice versa. For example, in a shop management system:A Customer can purchase multiple Items.An Item can be 2 min read Uploading images in Django - Python Prerequisite - Introduction to DjangoUploading and managing image files is a common feature in many web applications, such as user profile pictures, product images, or photo galleries. In Django, you can handle image uploads easily using the ImageField in models.In this article, weâll walk through a 3 min read Customize Object Names with __str__ Method When you create instances of a Django model, by default, they appear in the Django admin interface and elsewhere as "ModelName object (1)" (or a similar format). This can make it hard to identify records, especially when you have many objects.Why Customize Object Display Names?By default, Django doe 2 min read Custom Field Validations in Django Models Field validation ensures that the data entered into a model field meets specific rules before itâs saved to the database. While Django provides built-in validations for common checks, custom field validation lets you enforce your own rules, such as verifying formats, length limits, or complex condit 3 min read Meta Class in Models - Django Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. Itâs free and open source. D 3 min read How to use Django Field Choices ? Djangoâs choices option lets you limit a model field to a fixed set of values. It helps keep your data clean and consistent, and automatically shows a dropdown menu in forms and the admin instead of a text box.Choices are defined as pairs: the first value is saved to the database, and the second is 2 min read Like