用 CharField 定义的字段在数据库中存放为 verchar 类型

自定义 char 类型字段需要下面的代码:

  1. class FixedCharField(models.Field):
  2. """
  3. 自定义的 char 类型的字段类
  4. """
  5. def __init__(self, max_length, *args, **kwargs):
  6. self.max_length = max_length
  7. super(FixedCharField, self).__init__(max_length=max_length, *args, **kwargs)
  8.  
  9. def db_type(self, connection):
  10. """
  11. 限定生成数据库表的字段类型为 char,长度为 max_length 指定的值
  12. """
  13. return 'char(%s)' % self.max_length

models.py:

  1. from django.db import models
  2.  
  3. class FixedCharField(models.Field):
  4. """
  5. 自定义的 char 类型的字段类
  6. """
  7. def __init__(self, max_length, *args, **kwargs):
  8. self.max_length = max_length
  9. super(FixedCharField, self).__init__(max_length=max_length, *args, **kwargs)
  10.  
  11. def db_type(self, connection):
  12. """
  13. 限定生成数据库表的字段类型为 char,长度为 max_length 指定的值
  14. """
  15. return 'char(%s)' % self.max_length
  16.  
  17. class Person(models.Model):
  18. id = models.AutoField(primary_key=True) # 自增的 id 主键
  19. name = models.CharField(max_length=32)
  20. sex = FixedCharField(max_length=32, default="Man") # 使用上面自定义的char类型的字段
  21. age = models.IntegerField()
  22. birthday = models.DateField(auto_now_add=True)

执行命令更新到数据库

Python - Django - ORM 自定义 char 类型字段的更多相关文章

  1. Python - Django - ORM 自定义表名

    通过 Django 建立的表 命名方式为:项目名_表名 可以将该默认命名方式进行修改 models.py: from django.db import models class Person(mode ...

  2. ORM中自定义一个char类型字段

    自定义一个char类型字段 class MyCharField(models.Field): """ 自定义的char类型的字段类 """ ...

  3. 自定义char类型字符,django中事务

    自定义char类型字符 # 自定义char类型,继承Field父类 class MyCharField(Field): def __init__(self, max_length, *args, ** ...

  4. Python Django ORM 字段类型、参数、外键操作

    AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 primary ...

  5. Django ORM中常用的字段类型以及参数配置

    一.数值型 AutoField对应int(11).自增主键,Django Model默认提供,可以被重写. BooleanField对应tinyint(1).布尔类型字段,一般用于记录状态标记. De ...

  6. django ORM 自定义字段

    class FixedCharField(models.Field): """ 自定义的char类型的字段类 """ def __init_ ...

  7. 实践001:char 类型字段在表中的长度

    Rainy on 20170215 1.同事在 写RFC的时候遇到报错:"YTST_001" 必须为扁平结构.不能将内部表.字符# 原因是自建结构中字段定义为了string 类型. ...

  8. Python - Django - ORM 多对多表结构的三种方式

    多对多的三种方式: ORM 自动创建第三张表 自己创建第三张表, 利用外键分别关联作者和书,关联查询比较麻烦,因为没办法使用 ORM 提供的便利方法 自己创建第三张表,使用 ORM 的 ManyToM ...

  9. Python - Django - ORM 不常用字段

    BigAutoField(AutoField): bigint 自增列,必须填入参数 primary_key=True 如果没有写自增列,则会自动创建一个列名为 id 的列 SmallIntegerF ...

随机推荐

  1. Mysql 为什么不建议在 MySQL 中使用 UTF-8?

    最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误: Incorrect string value: ‘😃 &l ...

  2. MongoDB 查看集合的统计信息

    和 RDBMS 一样, MongoDB 同样存储集合的统计信息,通过调用命令 db.collection.stats() 可以方便的查看集合的统计信息. --1 查看集合 things 的统计信息 r ...

  3. IKVM

    $ ikvmc -target:library E:\jt400.jar    $ ikvmc -target:library -reference:E:\jt400.dll E:\FTU.jar   ...

  4. 【JS】闭包的理解

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无 ...

  5. [matlab工具箱] 神经网络Neural Net

    //目的是学习在BP神经网络的基础上添加遗传算法,蚁群算法等优化算法来优化网络,这是后话. 先简单了解了MATLAB中的神经网络工具箱,工具箱功能还是非常强大的,已经可以拟合出非常多的曲线来分析了. ...

  6. [nginx]nginx的一个奇葩问题 500 Internal Server Error phpstudy2018 nginx虚拟主机配置 fastadmin常见问题处理

    [nginx]nginx的一个奇葩问题 500 Internal Server Error 解决方案 nginx 一直报500 Internal Server Error 错误,配置是通过phpstu ...

  7. 部署Hadoop集群之前的一些系统配置

    修改内核参数 在/etc/sysctl.conf文件中添加如下配置(需要root权限)以下参数的默认值是在centos7下查看的fs.file-max = 6815744 //文件描述符总数,默认值: ...

  8. 查看windows操作系统的默认编码【转】

    在Windows平台下,进入DOS窗口,输入:chcp可以得到操作系统的代码页信息,你可以从控制面板的语言选项中查看代码页对应的详细的字符集信息. 例如: 我的活动代码页为:936,它对于的编码格式为 ...

  9. OpenFOAM在原有算例上新建算例(只拷贝0,system,constant)

    原视频下载地址: https://yunpan.cn/cMpyBHSEvC7T4  (提取码:dca4)

  10. [转] 修改sqlserver的数据库名、物理名称和逻辑文件名

    转载: https://blog.csdn.net/dym0080/article/details/81017777