1. Django ORM 单表操作核心解析
作为Django框架最强大的特性之一,ORM(对象关系映射)让开发者能够用Python类的方式操作数据库。单表操作是ORM中最基础却最常用的功能,掌握好单表查询和操作技巧,能解决80%的日常数据库交互需求。我在实际项目中发现,很多开发者对ORM的认知停留在基础CRUD层面,其实Django ORM的单表操作藏着不少高效用法和性能优化技巧。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 模型定义与基础操作
2.1 模型定义规范
先来看一个标准的单表模型定义示例:
python复制from django.db import models
class Article(models.Model):
STATUS_CHOICES = [
('draft', '草稿'),
('published', '已发布'),
('archived', '归档')
]
title = models.CharField(max_length=200, verbose_name='标题')
content = models.TextField(verbose_name='内容')
status = models.CharField(
max_length=20,
choices=STATUS_CHOICES,
default='draft',
verbose_name='状态'
)
publish_date = models.DateTimeField(
null=True,
blank=True,
verbose_name='发布时间'
)
view_count = models.PositiveIntegerField(
default=0,
verbose_name='浏览量'
)
class Meta:
db_table = 'blog_articles' # 显式指定表名
ordering = ['-publish_date'] # 默认排序
verbose_name = '文章'
verbose_name_plural = '文章列表'
def __str__(self):
return self.title
几个关键注意点:
- 每个字段都应该明确
verbose_name,这对后台自动生成表单特别重要 - 状态类字段使用
choices参数定义可选项,比纯字符串更规范 - 日期字段通常需要设置
null=True, blank=True以适应业务场景 Meta内部类中的db_table可以避免Django自动生成的表名不符合团队规范
2.2 基础CRUD操作
创建记录有两种推荐方式:
python复制# 方式1:create方法(推荐简单场景)
article = Article.objects.create(
title='Django ORM指南',
content='...',
status='published'
)
# 方式2:先实例化再保存(需要额外处理时使用)
article = Article(
title='高级Django技巧',
content='...'
)
article.status
