我们知道,Django 默认的 models.CharField() 字段在数据库中是对应于 varchar 类型的。若想要 Django 支持 char 字段该怎么办呢?
答案是我们可以重新写一个类来支持 char 字段
from django.db import models
class MyCharField(models.Field):
"""
自定义的 char 类型的字段
"""
def __init__(self, max_length, *args, **kwargs):
self.max_length = max_length
super(MyCharField, self).__init__(max_length=max_length, *args, **kwargs)
def db_type(self, connection):
return 'char(%s)' % self.max_length
然后就可以在模型中使用了。
name = MyCharField(max_length=32) --> char(32)