-
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("自定义管理器")
Django—模型—数据查询(自定义管理器)
最新推荐文章于 2020-11-30 11:34:55 发布