包含自定义数据类型的旧表的Django模型
我正在使用Postgresql遗留表,发现一些字段具有自定义数据类型 例如,包含自定义数据类型的旧表的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)它是否能正确地“适合”现有表(例如,如果我在表
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)
,即将常规参数传递给自定义字段类吗?是的,您可以,所有字段类型可用的公共字段选项都列在这里