首页 > 解决方案 > 将 PostreSQL 枚举类型转换为 Django 客户字段

问题描述

我的 PostgreSQL 数据库中有以下 ENUM:

CREATE TYPE UserType AS ENUM ('Admin','Teacher', 'Student');

CREATE TYPE CourseType AS ENUM ();

我想将其用作表中的列类型之一,但是如何在 Django 中创建此自定义字段,该字段使用 PostgreSQL 的 ENUM 类型中的值,而不仅仅是使用如下元组:

USER_TYPES = (
    ('A', 'Admin'),
    ('T', 'Teacher'),
    ('S', 'Student'),
)
usertype = models.CharField(max_length=1, choices=USER_TYPES)

因为这将在本地保存在 Django 项目中,而不是在数据库中。我计划在此 ENUM 中添加更多值,因此希望 Django 将此类型用作字段而不是选择。我怎么做。

标签: pythondjangopostgresqldjango-modelsenums

解决方案


我遇到了同样的麻烦,你看过这两个资源吗?

https://schinckel.net/2019/09/18/postgres-enum-types-in-django/

https://github.com/ashleywaite/django-more/tree/master/django_enum

他们似乎解决了这个问题

更新:对于 Django 3,这个django-morefork 很适合我https://github.com/AlexanderTar/django-more


推荐阅读