Django基础教程(四十一)Django数据模型的设计与实现之数据库查询接口简介:别再用all()了!Django数据库查询的“骚操作”大全,让你代码飞起来!

嘿,Django的小伙伴们!今天咱们来唠点硬核但超级实用的——Django的数据库查询接口。我知道,很多新手(甚至一些老手)一碰到数据库操作,就习惯性地祭出 MyModel.objects.all() 这把“万能钥匙”,然后交给Python在内存里吭哧吭哧地过滤、循环。

打住!兄弟,你的数据库引擎可是经过千锤百炼的优化神器,你让它沦落成一个简单的数据存储罐,这简直是杀鸡用牛刀,不,是用光剑切菜!

今天,我就带你深入Django ORM(对象关系映射)的腹地,看看它为我们准备了哪些好用又高效的“神兵利器”。准备好了吗?系好安全带,咱们发车了!

第一章:舞台搭建——我们的示例模型

光说不练假把式,咱们先搭个简单的博客系统模型,方便后面演示。

# models.py
from django.db import models
from django.contrib.auth.models import User

class Category(models.Model):
    name = models.CharField(max_length=100)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

class Post(models.Model):
    STATUS_CHOICES = (
        ('draft', '草稿'),
        ('published', '已发布'),
    )
    title = models.CharField(max_length=200)
    body = models.TextField()
    status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='draft')
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='posts')
    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='posts')
    views = models.PositiveIntegerField(default=0) # 阅读量
    published_at = models.DateTimeField(null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

class Tag(models.Model):
    name = models.CharField(max_length=50)
    posts = models.ManyToManyField(Post, related_name='tags')

    def __str__(self):
        return self.name

模型很简单:User(Django自带的)、Category(文章分类)、Post(文章)、Tag(标签)。关系也很清晰:一篇文章属于一个用户和一个分类,同时可以拥有多个标签。

第二章:初出茅庐——基础查询操作(管理器Objects)

Django为每个模型都标配了一个叫 objects 的管理器(Manager),它就是咱们通往数据库的大门。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值