Выпадающий список в админке

В модели у поля с типом CharField() можно добавить атрибут choices, который позволяет указать поля для выпадающего списка.

# models.py

class Product(models.Model):
    SIZES = (
        ('S', 'Small'),
        ('M', 'Medium'),
        ('L', 'Large'),
    )

    size = models.CharField(max_length=1, choices=SIZES)

Теперь в админке данное поле будет выводиться как выпадающий список.

Django. Choices

При добавлении пункта в «SIZES», данный пункт также автоматически появится в админке.

В базе данных значение будет сохраняться как «S», «M» или «L».