Django模型中自定义字段类型

在使用Django模型创建表时,有时候不存在或者不满足条件我们想要的表字段类型。这时我们可以继承Django模型中的Field来实现自定义字段类型。

如下所示代码创建了一个tinyint类型的字段:

# 创建自定义字段类型:tinyint
class TinyIntField(models.Field):
    def __init__(self, *args, **kwargs):
        self.max_length = kwargs["max_length"]
        super().__init__(*args, **kwargs)

    # 这个方法是创建Django中,没有的数据库字段类型
    def db_type(self, connection):
        return "tinyint({max_length})".format(max_length=self.max_length)

使用的时候直接如下所示:

state = TinyIntField(max_length=1, blank=False, null=False, default=-1, verbose_name='附件状态 1:已使用 -1:未使用')

版权声明:本文为qq_43428376原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。