zoukankan      html  css  js  c++  java
  • django模型orm进行group by

    场景:三个模型分别为教师,学生,课程。一个教师可主讲多门课程,但一门课程只能由一个教师主讲,即教师和课程是一对多的关系。一个学生可选多门课程,一门课程可被多个学生选,即学生和教师为多对多的关系。

    class Teacher(models.Model):
        name = models.CharField(max_length=20, verbose_name='教师姓名')
    
        def __unicode__(self):
            return self.name
    
    
    class Student(models.Model):
        name = models.CharField(max_length=20, verbose_name='学生姓名')
    
        def __unicode__(self):
            return self.name
    
    
    class Course(models.Model):
        name = models.CharField(max_length=20, verbose_name='课程名')
        teacher = models.ForeignKey(Teacher, verbose_name='主讲人')
        student = models.ManyToManyField(Student, verbose_name='选课学生')
    
        def __unicode__(self):
            return self.name

    选取某教师主讲的pk最小的课:

    Teacher.objects.annotate(Min('course__pk')).get(pk=2).course__pk__min

    多对多也一样

    这个例子不太典型,比如快递和其状态两张表是一对多关系,查最新的状态就可以使用这种方法(也可以在有新的状态时在快递表中每次更新最新的状态)

  • 相关阅读:
    css3阴影效果
    应该了解的9种CSS技巧
    position
    MyEclipse设置Java代码注释模板
    Struts2 常用的常量配置
    CSS 中文字体对应英文和Unicode编码
    MyEclipse使用前优化与配置
    MyEclipse 快捷键收集
    Ajax 调用WebServices之一 基本应用
    C#控制台显示进度条
  • 原文地址:https://www.cnblogs.com/songbird/p/7355336.html
Copyright © 2011-2022 走看看