Что хранится в базе данных для выпадающего поля одиночного выбора? (Django)
У меня есть выпадающее поле одиночного выбора "Month" с 3 вариантами "January", "February" и "March", как показано ниже:
Это код для выпадающего поля одиночного выбора "Месяц" в классе "Дата" ниже:
# "store/models.py"
from django.db import models
class Date(models.Model):
class Months(models.TextChoices):
JANUARY = 'JAN', 'January'
FEBRUARY = 'FEB', 'February'
MARCH = 'MAR', 'March'
month = models.CharField(max_length=100, choices=Months.choices)
А это код старой версии для выпадающего поля одиночного выбора "Month" в классе "Date" , который эквивалентен приведенному выше коду:
# "store/models.py"
from django.db import models
class Date(models.Model):
JANUARY = 'JAN'
FEBRUARY = 'FEB'
MARCH = 'MAR'
MANTHS = [
(JANUARY, 'January'),
(FEBRUARY, 'February'),
(MARCH, 'March')
]
month = models.CharField(max_length=100, choices=MANTHS)
Теперь, если я выберу "February" и нажму "SAVE", что будет сохранено в базе данных? "ФЕВРАЛЬ"? "FEB"? или "February"?
"FEB" хранится в базе данных. На самом деле, как показано ниже, "FEBRUARY" - это просто переменная, "FEB" - это значение, хранящееся в базе данных, а "February" - это опция, отображаемая в опция, отображаемая в выпадающем поле одиночного выбора "Month" на странице "Add date" в Django Admin(GUI):
# "store/models.py"
from django.db import models
class Date(models.Model):
class Months(models.TextChoices):
# |Variable| | DB | | Option |
JANUARY = 'JAN', 'January'
FEBRUARY = 'FEB', 'February'
MARCH = 'MAR', 'March'
month = models.CharField(max_length=100, choices=Months.choices)
Для старой версии код ниже:
# "store/models.py"
from django.db import models
class Date(models.Model):
# |Variable| | DB |
JANUARY = 'JAN'
FEBRUARY = 'FEB'
MARCH = 'MAR'
MANTHS = [
# |Variable| | Option |
(JANUARY, 'January'),
(FEBRUARY, 'February'),
(MARCH, 'March')
]
month = models.CharField(max_length=100, choices=MANTHS)
Как показано ниже, "FEB" хранится в базе данных (SQLite)
Кроме того, добавив следующий код в класс "Date" :
def __str__(self):
return self.month
Вы можете проверить, что хранится в базе данных на странице "Выберите дату для изменения" в Django Admin(GUI), как показано ниже:
Ниже представлен полный код:
# "store/models.py"
from django.db import models
class Date(models.Model):
class Months(models.TextChoices):
# |Variable| | DB | | Option |
JANUARY = 'JAN', 'January'
FEBRUARY = 'FEB', 'February'
MARCH = 'MAR', 'March'
month = models.CharField(max_length=100, choices=Months.choices)
def __str__(self):
return self.month
А вот полный код для старой версии ниже:
# "store/models.py"
from django.db import models
class Date(models.Model):
# |Variable| | DB |
JANUARY = 'JAN'
FEBRUARY = 'FEB'
MARCH = 'MAR'
MANTHS = [
# |Variable| | Option |
(JANUARY, 'January'),
(FEBRUARY, 'February'),
(MARCH, 'March')
]
month = models.CharField(max_length=100, choices=MANTHS)
def __str__(self):
return self.month