Django Field Choices. De acordo com a documentação, as Opções de campo são uma sequência que consiste em iteráveis ​​de exatamente dois itens (por exemplo, [ (A, B), (A, B) ...]) para usar como opções para algum campo. Por exemplo, considere um semestre de campo que pode ter opções como {1, 2, 3, 4, 5, 6} apenas. As opções limitam a entrada do usuário aos valores específicos especificados em models.py. Se as opções forem fornecidas, elas serão aplicadas pela validação do modelo e o widget de formulário padrão será uma caixa de seleção com essas opções em vez do campo de texto padrão. As opções podem ser qualquer objeto de sequência - não necessariamente uma lista ou tupla.

O primeiro elemento em cada tupla é o valor real a ser definido no modelo e o segundo elemento é o nome legível.
Por exemplo,

SEMESTER_CHOICES = (
    ("1", "1"),
    ("2", "2"),
    ("3", "3"),
    ("4", "4"),
    ("5", "5"),
    ("6", "6"),
    ("7", "7"),
    ("8", "8"),
)

Vamos criar um campo de opções com o semestre anterior em nosso projeto django chamado geeksforgeeks.

from django.db import models 
  
  
SEMESTER_CHOICES = ( 
    ("1", "1"), 
    ("2", "2"), 
    ("3", "3"), 
    ("4", "4"), 
    ("5", "5"), 
    ("6", "6"), 
    ("7", "7"), 
    ("8", "8"), 
) 
  
  
class Student(models.Model): 
      semester = models.CharField( 
        max_length = 20, 
        choices = SEMESTER_CHOICES, 
        default = '1'
        ) 

Vamos verificar no painel de administração como o semestre é criado.
django-field-choices
Também é possível coletar suas opções disponíveis em grupos nomeados que podem ser usados ​​para fins organizacionais:

MEDIA_CHOICES = [
    ('Áudio', (
            ('vinil', 'Vinil'),
            ('cd', 'CD'),
        )
    ),
    ('Vídeo', (
            ('vhs', 'Fita VHS'),
            ('dvd', 'DVD'),
        )
    ),
    ('desconhecido', 'Desconhecido'),
]

O primeiro elemento em cada tupla é o nome a ser aplicado ao grupo. O segundo elemento é um iterável de 2 tuplas, com cada 2 tupla contendo um valor e um nome legível para uma opção. As opções agrupadas podem ser combinadas com opções desagrupadas em uma única lista (como a opção desconhecida neste exemplo).
Para cada campo de modelo que tem opções definidas, Django adicionará um método para recuperar o nome legível para o valor atual do campo. Veja get_FOO_display()na documentação da API do banco de dados.