本文介绍了如何在Django模型字段中强制使用char(N)数据类型而不是varchar(N)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
根据django文档 docs.djangoproject/en /1.9/topics/db/models/
它是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.我找不到办法. 除了手动更改列
解决方案我认为您最好的选择是编写自定义字段类型,将其基于CharField并更改其db_type()方法.在此处查看相关示例
As per django docs docs.djangoproject/en/1.9/topics/db/models/
it's ORM create varchar field instead of char.
from django.db import models class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30)and equivalent sql statement
CREATE TABLE myapp_person ( "id" serial NOT NULL PRIMARY KEY, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL );so here we can see it is using varchar, but can I use char instead. I'm unable to find a way. apart from manually altering the column
解决方案I think your best bet is to write a custom field type, base it on CharField and alter its db_type() method. Check relevant example here
更多推荐
如何在Django模型字段中强制使用char(N)数据类型而不是varchar(N)
发布评论