Django—模型—数据查询(自定义管理器)

  • models.py


    from django.db import models
    from django.db.models import Manager
    
    
    # 扩展Manager管理器功能
    class MyManager(Manager):
        # 获取结果集,
        def get_queryset(self):
            # 获取查询结果集
            # data =
            # 把sex不为空显示出来
            # data = filter(sex__isnull=True)
            return super().get_queryset().filter(sex__isnull=False)
    
        def after(self, date):
            data = User.objects.filter(regtime__gt=date)
            return data
    
    
    
    class Detail(models.Model):
        did = models.AutoField(primary_key=True)
        phone = models.CharField(max_length=20, blank=True, null=True)
        uid = models.IntegerField(blank=True, null=True)
    
        class Meta:
            managed = False
            db_table = 'detail'
    
    class User(models.Model):
        uid = models.AutoField(primary_key=True)
        username = models.CharField(unique=True, max_length=30)
        password = models.CharField(max_length=128)
        regtime = models.DateTimeField()
        sex = models.IntegerField(blank=True, null=True)
    
        class Meta:
            managed = False
            db_table = 'user'
    
        def __str__(self):
            return self.username + str(self.uid)
        # 可以自定义
        objects = Manager()  # 系统管理器
        user_manager = Manager()  #自定义管理器
        sex_manager = MyManager()
    
        @classmethod
        def after(cls,date):
            return cls.user_manager.filter(regtime__gt=date)
    
        @classmethod
        def get_sexes(cls):
            return cls.objects.filter(sex__isnull=False)

     

  • views.py


    from django.db.models import Count, Q
    from django.http import HttpResponse
    from django.shortcuts import render
    
    # Create your views here.
    from App.models import User
    
    def manage(request):
        # 使用自定义管理器查询
        # data = User.user_manager.all()
        # data = User.sex_manager.all()
        # print(data)
        # for user in data:
        #     print(user.sex)
    
        # 调用自己的类方法
        # data = User.after('2020-03-11')
        # print(data)
    
        # 调用管理器的方法sex_manager
        data = User.sex_manager.after('2020-03-11')
        print(data)
    
        return HttpResponse("自定义管理器")

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值