根据django文档 https:/docs.djangoproject.comen1.9topicsdbmodels。
它的ORM创建 varchar
领域而不是 char
.
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
和等价的 sql 语句
CREATE TABLE myapp_person (
"id" serial NOT NULL PRIMARY KEY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
);
所以在这里,我们可以看到它使用varchar,但我可以使用 char
而不是。我找不到办法,除了手动改变列的位置,我也没有办法。
对于那些对 @andrai-avram 给出的答案感到苦恼的人来说,这应该是这样的。
from django.db import models
class ActualCharField(models.CharField):
def db_type(self, connection):
varchar: str = super().db_type(connection)
char: str = varchar.replace('varchar', 'char')
return char
然后就用这个类代替默认的 django.db.models.CharField