我有以下格式的记录:

| id  | name |       created                  |
-----------------------------------------------
|1    | A    |2024-04-10T02:49:47.327583-07:00|
|2    | A    |2024-04-01T02:49:47.327583-07:00|
|3    | A    |2024-03-01T02:49:47.327583-07:00|
|4    | A    |2024-02-01T02:49:47.327583-07:00|
|5    | B    |2024-02-01T02:49:47.327583-07:00|

型号:

class Model1(model.Models):
   name = models.CharField(max_length=100)
   created = models.DateTimeField(auto_now_add=True)

我想在Django执行一组与月从字段created和获得最新的记录从那个月.

预期输出:

| id  | name |       created                  |
-----------------------------------------------
|1    | A    |2024-04-10T02:49:47.327583-07:00|
|3    | A    |2024-03-01T02:49:47.327583-07:00|
|4    | A    |2024-02-01T02:49:47.327583-07:00|

我正在使用django-cte执行上述操作

from django.db.models.functions import DenseRank, ExtractMonth
from django_cte import With
m = Model1.objects.get(id=1)
cte = With(
        Model1.objects.filter(name=m.name)
          rank=Window(
            expression=DenseRank(),
            partition_by=[ExtractMonth("created")],
            order_by=F("created").desc(),
        )
     )
qs = cte.queryset().with_cte(cte).filter(rank=1)

但上面给出的错误:

qs = cte.queryset().with_cte(cte).filter(rank=1)
                    ^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'QuerySet' object has no attribute 'with_cte'

请帮帮我!

推荐答案

你需要混合CTEManager,否则你会得到一个"香草"QuerySet:

from django_cte import CTEManager


class Model1(model.Models):
    name = models.CharField(max_length=100)
    created = models.DateTimeField(auto_now_add=True)
    objects = CTEManager()

Python相关问答推荐

Chatgpt API不断返回错误:404未能从API获取响应

max_of_three使用First_select、second_select、

如何让剧作家等待Python中出现特定cookie(然后返回它)?

数据抓取失败:寻求帮助

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

如果值发生变化,则列上的极性累积和

在Python中,从给定范围内的数组中提取索引组列表的更有效方法

在单个对象中解析多个Python数据帧

Django—cte给出:QuerySet对象没有属性with_cte''''

如何禁用FastAPI应用程序的Swagger UI autodoc中的application/json?

Tkinter菜单自发添加额外项目

基于行条件计算(pandas)

基于另一列的GROUP-BY聚合将列添加到Polars LazyFrame

polars:有效的方法来应用函数过滤列的字符串

如何在GEKKO中使用复共轭物

使用python playwright从 Select 子菜单中 Select 值

提取数组每行的非零元素

修改.pdb文件中的值并另存为新的

按条件计算将记录拆分成两条记录

合并Pandas中的数据帧,但处理不存在的列