包含自定义数据类型的旧表的Django模型

包含自定义数据类型的旧表的Django模型,django,postgresql,django-models,custom-data-type,Django,Postgresql,Django Models,Custom Data Type,我正在使用Postgresql遗留表,发现一些字段具有自定义数据类型 例如,color列将color\u type作为数据类型,而不是例如字符变化,具有允许的选项[红|绿|蓝|黑] 根据inspectdb命令,自动生成的模型包含以下行和注释: color = models.TextField(blank=True, null=True) # This field type is a guess. 我将按照以下类中的描述“清理”这一行,但不确定a)它是否能正确地“适合”现有表(例如,如果我在表

我正在使用Postgresql遗留表,发现一些字段具有自定义数据类型

例如,
color
列将
color\u type
作为数据类型,而不是例如
字符变化
,具有允许的选项
[红|绿|蓝|黑]

根据
inspectdb
命令,自动生成的模型包含以下行和注释:

color = models.TextField(blank=True, null=True)  # This field type is a guess.
我将按照以下类中的描述“清理”这一行,但不确定a)它是否能正确地“适合”现有表(例如,如果我在表中写入新对象),以及b)如果迁移到新数据库,自定义类型是否能正确复制:

class Things(models.Model):
    name = models.CharField(max_length=30, null=True, blank=True) 

    RED = 'red'
    GREEN = 'green'
    BLUE = 'blue'
    BLACK= 'black'
    COLOR_CHOICES = (
                      (RED, 'red'),
                      (GREEN, 'green'),
                      (BLUE, 'blue'),
                      (BLACK, 'black'),
                     )
    color = models.CharField(       
                               max_length = 10, 
                               choices = COLOR_CHOICES,
                               default = RED, 
                               null = True, 
                               blank = True
                            )

    def __str__(self):
        return self.name

    class Meta:
        managed = False
        db_table = 'myuser'
在Django模型中反映这种自定义数据类型的正确方法是什么

您可以编写使用自定义数据库类型的:

class ColorField(models.Field):
    def db_type(self, connection):
        return 'enum("red","green","blue","black")'

谢谢,错过了文档中的那个部分!您还可以澄清我是否可以安全地编写
color=ColorField(null=True,blank=True)
,即将常规参数传递给自定义字段类吗?是的,您可以,所有字段类型可用的公共字段选项都列在这里