码迷,mamicode.com
首页 > 其他好文 > 详细

django模型orm进行group by

时间:2017-08-14 00:30:52      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:any   最小   更新   length   模型   course   code   django   快递   

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

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

多对多也一样

 

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

django模型orm进行group by

标签:any   最小   更新   length   模型   course   code   django   快递   

原文地址:http://www.cnblogs.com/songbird/p/7355336.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!