如何在 Django 中管理 Postgres 枚举类型?

Posted

技术标签:

【中文标题】如何在 Django 中管理 Postgres 枚举类型?【英文标题】:How to manage Postgres Enum type in Django? 【发布时间】:2021-08-21 11:08:48 【问题描述】:

我曾使用django-mysql 从 Django 管理 MySQL 枚举类型。最近我在我的 Django 项目中使用 Postgres 数据库。要管理Postgres Enum,我找不到任何库。 Django 中有一个db_type() 方法来管理自定义类型。但问题是必须先在数据库中创建 Postgres 枚举,然后才能使用它。

这是 Postgres 枚举的代码示例。

CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
CREATE TABLE person (
    name text,
    current_mood mood
);

有图书馆吗? 如果没有,我怎么能从 Django 实现 Postgres 枚举管理?

【问题讨论】:

【参考方案1】:

好吧,如果架构是预先烘焙的,那么 defining the same choices and pretending the field is text-valued 就可以了。刚刚用 Postgresql 13.3 和 Django 3.2.6 / psycopg2 2.9.1 测试了这个。

否则我看到其他人使用自定义数据库架构管理变魔术 -- here 和 here。

【讨论】:

以上是关于如何在 Django 中管理 Postgres 枚举类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JSONField 中使用 Postgres 在 Django 中搜索带有空格的键?

如何在 django rest 框架中的 postgres JSONField 上应用过滤器?

django中所有URL的编程错误,postgres在db中找不到表?

Django admin save_model 没有在 Postgres 中推进主键

Java 枚举、JPA 和 Postgres 枚举——如何让它们一起工作?

如何使用 django ORM 在 postgres 中仅选择日期部分