有两张表分别记录了一个对象,和对象所发生的变动线, 我以鼠标举个例子
审批不通过和开模的所有鼠标,可以 ORM 写吗?原生 SQL 也行class Mouse(models.Model):
    name = models.CharField('鼠标型号 /名称', max_length=255)
    ...
CHOICE = (
    (1, '立项'),
    (2, '设计'),
    (3, '研发'),
    (4, '审批'),
    (5, '审批不通过'),
    (6, '审批通过'),
    (7, '开模'),
    ...
)
class MouseRel(models.Model):
    name = models.PositiveIntegerField('变动名称',choice=CHOICE)
    time = models.DateTimeField('变动时间', auto_now_add=True)
    mouse = models.Foreignkey(
        Mouse,
        db_index=True,
        on_delete=models.CASCADE,
        related_name='rels'
    )
    ...
|  |      1xixijun      2021-07-02 10:57:22 +08:00  1 MouseRel.objects.filter(mouse__in=(5,7), time__lt='2021-07-02',time__gt='2021-07-01') 不知道理解的对不对。 | 
|  |      2xixijun      2021-07-02 10:58:38 +08:00 mouse__in -> mouse_id__in | 
|  |      3leebx      2021-07-02 11:00:19 +08:00  1 MouseRel.objects.filter(time__range=(starttime,endtime)).filter(Q(name=5) | Q(name=7)) | 
|  |      5leebx      2021-07-02 11:08:43 +08:00 @HashV2 mr= MouseRel.objects.filter(time__range=(starttime,endtime)).filter(Q(name=5) | Q(name=7))      mouses = [m.mouse.name for m in mr] | 
|  |      6HashV2 OP @leebx #5 一个 mouse 会关联很多 mouserel 这种会查出来很多重复的 mouse 还要自己去 distinct, 我是希望是能直接从 Mouse.objects.filter(query_params).distinct() 直接查出相关 mouse 数据 | 
|  |      7leebx      2021-07-02 11:23:08 +08:00 @HashV2 Mouse.mouserel_set.filter(time__range=(starttime,endtime)).filter(Q(name=5) | Q(name=7)) | 
|  |      8jabari      2021-07-02 11:34:22 +08:00  3 ``` Mouse.objects.filter(rels__name__in=[5, 7], rels__time__range=(start_time, end_time)).distinct() ``` | 
|      945HXlKzal6W56zUJ      2021-07-02 11:57:46 +08:00 django  聚合查询 具体的语句就不说了 | 
|      1045HXlKzal6W56zUJ      2021-07-02 11:59:09 +08:00 @jabari 学到了学到了, | 
|      12leven87      2021-07-02 16:36:46 +08:00 吐槽一下,同样在写 django orm, 以前没写过,感觉真是坑多的要死。 | 
|  |      13wangchonglie      2021-07-02 16:51:51 +08:00 @leven87 #12 同意, Django 的 ORM 并不好用 | 
|      14luckyc      2021-07-03 15:49:30 +08:00 还是 flask 好, 自己随便折腾. |