django restframework 模型管理器的使用
在处理嵌套关系时,如果我们希望两个或多个实例保持一对一的创建关系,我们可以编写一个自定义管理器类。
自定义管理器类主要用于两种情况:
- 1.修改原始查询集,重写all()方法
- 2.向管理器类中添加额外的方法,如向数据库中插入数据。
管理类的编写如下所示:
from django.db.models.manager import Manager class TrackManager(Manager): def create_track(self, validated_data): from models import Track from models import Album album_data = validated_data.pop('album') album = Album.objects.create(**album_data) validated_data['album'] = album track = Track.objects.create(**validated_data) return track def get_queryset(self): return Manager.get_queryset(self).filter(is_deleted=False)
注意:model的引入必须在方法内,在头部引入会出错。
管理类的使用
1、model.py中的导入引用
class Track(models.Model): album = models.ForeignKey(Album, related_name='tracks') order = models.IntegerField() title = models.CharField(max_length=100) duration = models.IntegerField() is_deleted = models.BooleanField(default=False) creator = models.CharField(max_length=100, null=True) objects = managers.TrackManager() class Meta: db_table = 'track'
2、serializer.py中的使用:
def create(self, validated_data): track = Track.objects.create_track(validated_data) return track
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具