Я хотел бы сохранить массив перечислений.
У меня есть следующее:
CREATE TABLE public.campaign
(
id integer NOT NULL,
product product[]
)
является enum
.
В Django я определил его следующим образом:
PRODUCT = (
('car', 'car'),
('truck', 'truck')
)
class Campaign(models.Model):
product = ArrayField(models.CharField(null=True, choices=PRODUCT))
Однако, когда я пишу следующее:
campaign = Campaign(id=5, product=["car", "truck"])
campaign.save()
Я получаю следующую ошибку:
ProgrammingError: column "product" is of type product[] but expression is of type text[]
LINE 1: ..."product" = ARRAY['car...
Примечание Я видел этот ответ, но я не использую sqlalchemy и не буду использовать его, если не нужно.
EDITED Я попробовал следующее предложение @Roman Konoval:
class PRODUCT(Enum):
CAR = 'car'
TRUCK = 'truck'
class Campaign(models.Model):
product = ArrayField(EnumField(PRODUCT, max_length=10))
и с:
campaign = Campaign(id=5, product=[CAR, TRUCK])
campaign.save()
Однако, я все равно получаю ту же ошибку,
Я вижу, что django переводит его в список строк. если я сразу напишу консоль psql:
INSERT INTO campaign ("product") VALUES ('{car,truck}'::product[])
он работает просто отлично