-
-
Save ishtiaque2asad2/77437a39653da299fe1fba473a6a6454 to your computer and use it in GitHub Desktop.
Example of the new django 3.0 TextChoices enumeration types
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.db import models | |
class Animal(models.Model): | |
class AnimalType(models.TextChoices): | |
ANTELOPE = 'A', 'Antelope' | |
BAT = 'B', 'Bat' | |
COUGAR = 'C', 'Cougar' | |
animal_type = models.CharField(max_length=1, choices=AnimalType.choices, default=AnimalType.ANTELOPE) | |
# In this example, the middle value on each line is what is saved to the database. So, `B` if I selected Bat. Since I am only using one character for each possible entry in this example, I set the `max_length` to 1. | |
>>> # Working with the AnimalType class itself outside of the Animal model | |
>>> | |
>>> Animal.AnimalType.values | |
['A', 'B', 'C'] | |
>>> | |
>>> Animal.AnimalType.names | |
['ANTELOPE', 'BAT', 'COUGAR'] | |
>>> | |
>>> Animal.AnimalType.labels | |
['Antelope', 'Bat', 'Cougar'] | |
>>> | |
>>> Animal.AnimalType.choices | |
[('A', 'Antelope'), ('B', 'Bat'), ('C', 'Cougar')] | |
>>> | |
>>> dict(Animal.AnimalType.choices) | |
{'A': 'Antelope', 'B': 'Bat', 'C': 'Cougar'} | |
>>> | |
>>> # Working with AnimalType in a Model Instance | |
>>> my_animal = Animal() | |
>>> my_animal.save() | |
>>> | |
>>> my_animal_type = my_animal.animal_type | |
>>> | |
>>> # To get the value saved to the database: | |
>>> str(my_animal.animal_type) | |
'A' | |
>>> | |
>>> # To get the display name: | |
>>> # https://docs.djangoproject.com/en/3.0/ref/models/instances/#django.db.models.Model.get_FOO_display | |
>>> my_animal.get_animal_type_display() | |
'Antelope' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment