Django 自定义

from django.db import models

class MyCharfield(models.Field):
    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

class Person(models.Model):
    pid = models.AutoField(primary_key=True,)
    name =models.CharField(max_length=32,db_column='new_name',verbose_name='姓名') # 指定列名  orm操作还是name
    age = models.IntegerField(null=True,blank=True,verbose_name='年龄',help_text='填写真实年龄')  # 数据可为空, 填充可为空
    # birth = models.DateTimeField(auto_now_add=True)  # 创建时提交当前时间
    birth = models.DateTimeField(auto_now=True)  # 每次修改保存当前时间
    # auto_now_add   auto_now   default 3个互斥
    phone = MyCharfield(max_length=11,)  # 不可编辑-不显示
    gender = models.IntegerField(default=3,choices=((1,''),(2,''),(3,'不详'))) # 选择

    def __str__(self):
        return '{} - {}'.format(self.pid,self.name)

    class Meta:  #元类 信息
        # 数据库中生成的表名称 默认 app名称 + 下划线 + 类名
        db_table = "person"  # 改表名

        # admin中显示的表名称
        verbose_name = '个人信息'

        # verbose_name加s
        verbose_name_plural = '所有用户信息'

        # 联合索引
        index_together = [
            ("pub_date", "deadline"),  # 应为两个存在的字段 遵循最左前缀
        ]

        # 联合唯一索引
        unique_together = (("driver", "restaurant"),)  # 应为两个存在的字段  联合唯一索引 联合出现的值只能一次

 

转载于:https://www.cnblogs.com/zhangchen-sx/p/10317449.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值