Поле Enum в MySQL
В MySQL существует несколько типов данных, char, varchar int, boolean, как вы уже знаете.
Но он также имеет тип Enum, что в SQL мы создаем таблицу следующим образом:
CREATE TABLE person(
id int.....
name varchar(50),
and
Married Enum(Yes,No)
)
Моя цель состоит в том, чтобы, когда я создаю модели в Django (Python), иметь возможность создавать таблицы в MySQL, я мог бы автоматически создавать и этот тип поля.
Я пробовал следующим образом:
from django.db import models
from enum import enum
class options(Enum):
Yes = "Yes"
No = "No"
class Customer(models.Model) :
name = models.CharField(max_length=200)
docto = models.CharField(max_length=14)
age = models.IntegerField(default=0)
username = models.CharField(max_length=20)
password = models.CharField(max_length=20)
block = models.CharField(
max_length=3,
choices=[(tag, tag.value) for tag in options],
default= 'No'
)
def __str__(self):
return self.name
Создание поля в MySQL создает, но создает как VARCHAR(3), а не как enum.
Может ли Django сделать это? Как это будет?
Мне бы не хотелось создавать таблицы непосредственно в базе данных,
В настоящее время на github есть пакет python под названием django-mysql, основанный на добавлении этих пакетов, хотя я не изучал, как именно они реализованы, но, прочитав документацию этой части пакета, я обнаружил, что он реализует поле enum на базе данных, вы можете посмотреть пример ниже, чтобы увидеть, как вы можете использовать этот пакет.
from django.db import models
from django_mysql.models import EnumField
class BookCoverColour(models.TextChoices):
RED = "red"
GREEN = "green"
BLUE = "blue"
class BookCover(models.Model):
colour = EnumField(choices=BookCoverColour.choices)