如何在Django模型字段中强制使用char(N)数据类型而不是varchar(N) [英] How to enforce char(N) datatype instead of varchar(N) in django model field

查看:575
本文介绍了如何在Django模型字段中强制使用char(N)数据类型而不是varchar(N)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

根据django文档 https://docs.djangoproject.com/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.我找不到办法. 除了手动更改列

解决方案

我认为您最好的选择是编写此处查看相关示例

As per django docs https://docs.djangoproject.com/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)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆