Django中的M——模型

模型Models

数据模型

模型的字段类型

  • CharField(max_length=):字符串类型,参数为长度
  • Boolean field():布尔类型
  • DateField():日期类型,年月日
  • DateTimeField():时间类型,年月日时分秒
    • auto_now_add:第一次创建的时候赋值
    • auto_now:每次修改时候赋值
  • AutoField():自增类型
  • IntegerField():整数类型
  • FloatField():浮点数类型
  • FileField():文件类型
  • ImageField(upload_to=)图片类型,存储路径,参数是路径
    • 依赖于pillow模块
    • 设置MEDIA_ROOT
  • TextField():文本类型
  • DecimalField():固定精度小数
    • max_digits:总位数
    • decimal_places:小数后几位

MEEDIA_ROOT的设置,例如存储用户头像icon,在settings.py中添加其路径:

MEDIA_ROOT = os.path.join(BASE_DIR, 'static/icons')

在模型中定义字段类型和限制为image文件:

class UserModel(models.Model):
    username = models.CharField(max_length=32)
    # upload_to=后面是根据时间生成的路径,在静态文件文件夹里面
    icon = models.ImageField(upload_to="%Y-%M-%D")

当然,我们也可以不用ImageField()属性,自定义存储的位置,然后将路径存储到数据库中

模型参数

  • default:默认值
  • null:是否为空,存储有关,创建记录时可以不传值,用NULL填充
  • blank:是否为空,校验有关,创建记录时可以为空字符串,不允许前端传空字符串,否则400
  • primary_key:主键,有自增属性
  • unique:唯一约束,可以有多个null

属性

数据模型的属性分为显性属性和隐形属性

显性属性包括开发主动声明的模型的属性和方法,还有从父类中继承来的属性和方法。

隐性属性是开发这未声明,自动生成的属性,开发者声明了就不自动生成了

例如模型的objects属性,是一个隐性属性,不需要开发者声明,自动生成,直接调用进行查询过滤,是一个manager实例,用来创建管理模型。

重写这个实例,实现对数据库数据的过滤,使返回的结果只包含没有被逻辑删除的结果。首先创建一个新的manager类,继承自Manager,重写他的get_queryset()方法,实现过滤功能。

class LearnManager(Manager):
    # 重写查询结果集,对数据进行过滤
    def get_queryset(self):
        queryset = super().get_queryset().filter(is_delete=Flase
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值