django的models使用介绍。

复制代码
from django.db import models

from utils.models import CommonModel


# Create your models here.
class User(CommonModel):
    #用户数据模型
    username = models.CharField('用户名',max_length=32, unique=True)
    password = models.CharField('密码',max_length=256)
    nickname = models.CharField('昵称',max_length=32, unique=True)
    avatar = models.ImageField('头像',null=True)

    class Meta:
        db_table = 'accounts_user'

1. 模型字段

模型字段是定义模型属性的方式。常用的字段类型包括:

  • models.CharField:用于存储短文本字符串。
  • models.TextField:用于存储长文本字符串。
  • models.IntegerField:用于存储整数。
  • models.FloatField:用于存储浮点数。
  • models.BooleanField:用于存储布尔值(True/False)。
  • models.DateField:用于存储日期。
  • models.DateTimeField:用于存储日期和时间。
  • models.ImageField:用于存储图像文件。
  • models.FileField:用于存储文件。
  • models.ForeignKey:用于定义与其他模型的多对一关系。
  • models.ManyToManyField:用于定义多对多关系。
  • models.OneToOneField:用于定义一对一关系。

2. 模型方法

模型类可以定义方法来实现特定的功能。常用的模型方法包括:

  • __str__(self):返回模型的字符串表示,通常用于在 Django 管理后台显示对象。
  • save(self, *args, **kwargs):保存模型实例到数据库。可以重写此方法以添加自定义保存逻辑。
  • delete(self, *args, **kwargs):删除模型实例。
  • get_absolute_url(self):返回模型的绝对 URL,通常用于在 Django 的 URL 路由中使用。

3. 查询集方法

Django 提供了丰富的查询集方法,用于从数据库中检索数据。常用的查询集方法包括:

  • all():返回模型的所有实例。
  • filter(**kwargs):根据条件过滤查询集,返回符合条件的实例。
  • exclude(**kwargs):返回不符合条件的实例。
  • get(**kwargs):返回符合条件的单个实例,如果没有找到或找到多个实例则抛出异常。
  • count():返回查询集中的实例数量。
  • order_by(*fields):根据指定字段排序查询集。
  • distinct():返回唯一的查询集结果。
  • values(*fields):返回字典形式的查询集结果,只包含指定的字段。
  • values_list(*fields, flat=False):返回元组形式的查询集结果,只包含指定的字段。

4. 管理器方法

每个模型都有一个默认的管理器 objects,可以使用它来访问查询集方法。你可以自定义管理器以添加自定义查询方法。

5. Meta 类

在模型内部定义 Meta 类以配置模型的行为和选项,例如:

  • db_table:指定数据库表名。
  • ordering:指定默认的排序方式。
  • verbose_nameverbose_name_plural:指定模型的可读名称。
相关推荐
学地理的小胖砸1 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql
dddaidai1231 小时前
Redis解析
数据库·redis·缓存
数据库幼崽1 小时前
MySQL 8.0 OCP 1Z0-908 121-130题
数据库·mysql·ocp
Amctwd2 小时前
【SQL】如何在 SQL 中统计结构化字符串的特征频率
数据库·sql
betazhou2 小时前
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
linux·数据库·mysql·oracle·ogg
lyrhhhhhhhh3 小时前
Spring 框架 JDBC 模板技术详解
java·数据库·spring
喝醉的小喵4 小时前
【mysql】并发 Insert 的死锁问题 第二弹
数据库·后端·mysql·死锁
付出不多4 小时前
Linux——mysql主从复制与读写分离
数据库·mysql
初次见面我叫泰隆4 小时前
MySQL——1、数据库基础
数据库·adb
Chasing__Dreams5 小时前
Redis--基础知识点--26--过期删除策略 与 淘汰策略
数据库·redis·缓存