【问题标题】:Convert PostreSQL Enum type to Django Customer Field将 PostgreSQL 枚举类型转换为 Django 自定义字段
【发布时间】:2020-09-13 01:50:13
【问题描述】:

我的 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 将此类型用作字段而不是选择。我该怎么做。

【问题讨论】:

  • 据我所知,选择还没有在数据库中强制执行,因此它不会创建具有枚举值的类型。
  • 这就是为什么我需要另一种方法来强制执行 ENUM 及其对数据库的值。由于值将在部署阶段添加到需要保存到数据库中的 ENUM

标签: python django postgresql django-models enums


【解决方案1】:

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

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

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

他们似乎解决了这个问题

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2023-02-21
    • 2018-02-14
    • 1970-01-01
    • 2011-09-11
    • 2013-01-30
    • 2010-12-21
    相关资源
    最近更新 更多