• 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
  • 相关阅读:
    [悟]你为什么想创业
    [悟] 因上努力,果上随缘
    自己写个多任务多线程断点下载框架
    大道甚夷,而人好径
    [经验帖]外包如何定价
    python 基础语法
    python 中文编码问题
    python的运行机制和版本区别
    [转]linux 调用动态库so文件
    shell join详解
  • 原文地址:https://www.cnblogs.com/wangyingblock/p/11090740.html
Copyright © 2020-2023  润新知