Django 类group_by的单表分组查询

Django 单表分组查询

建表
class Students(models.Model):
    """
    学生表
    """
    CLASS_CHOICES = (
        (1, "一班"),
        (2, "二班"),
        (3, "三班")
    )
    name = models.CharField(max_length=10, verbose_name="姓名")
    classes = models.IntegerField(default=1, choices=CLASS_CHOICES, verbose_name="班级")
    age = models.IntegerField(default=18, verbose_name="年龄")
    grade = models.DecimalField(default=0, max_digits=5, decimal_places=1, verbose_name="分数")

    class Meta:
        verbose_name = "学生表"
        verbose_name_plural = verbose_name
        db_table = "students"
插入假数据

在这里插入图片描述

这里直接用的sql语句,也可以使用Navicat创建,更方便

insert into students(name,classes,age,grade) values ("小洛",1,18,82),("小峰",1,18,82),
    -> ("旺旺",2,19,79),("阿华",2,18,91),("嗯哼",3,17,88);
django orm查询
class StudentS(APIView):
    """
    学生类
    """
    def get(self, request):
    	# 获取所有的班级字段
        student = Students.objects.values("classes").distinct()
		# student: <QuerySet [{'classes': 1}, {'classes': 2}, {'classes': 3}]>
		
        students = []
        for cla in student:
        	# 循环所有学生数据并将班级相同的学生归类到同一列表中
            stu = Students.objects.filter(classes=cla["classes"]).values("classes", "name")
            students.append(stu)
        return Response(students)

效果如下
在这里插入图片描述
该方法显得比较笨,不推荐使用,谁有更好的方法请留言一下,手动滑稽>_<

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值