【发布时间】:2026-01-15 04:35:01
【问题描述】:
我有一个非常独特的需求,我在 Django 文档中没有注意到这样的解决方案。
另外,我不想在数据库查询之后使用任何loop,即使我可以在所有记录上使用loop 实现这样的解决方案。
class Example(models.Model):
date = DateField
name = CharField
假设我在表中有以下记录
[
{date: "2018-01-05", name="jhon doe"},
{date: "2018-01-11", name="jonathan someone"},
{date: "2018-01-21", name="someone developer"},
]
和我的查询:
Example.objects.filter(date_range=["2018-01-01", "2018-01-31"])
正常情况下,当我们使用日期范围进行查询时,它会返回该范围内的所有记录。这是意料之中的正常现象。
但我希望它在某个日期范围内没有记录时带有空白记录。
我们注意到我在该范围内只有 3 条记录,所以我期待这样的结果
[
{date: "2018-01-01", name="Not Found"},
{date: "2018-01-02", name="Not Found"},
{date: "2018-01-03", name="Not Found"},
{date: "2018-01-04", name="Not Found"},
{date: "2018-01-05", name="jhon doe"},
{date: "2018-01-06", name="Not found"},
'''''to be continued in a range''''
]
有没有人知道在过滤期间准备像上面这样的查询集?我需要它,因为我在前端使用了一个 javascript 工具,它需要这样的数据。
尽管我可以通过前端在前端编写实用程序函数或循环遍历所有查询集并以上述方式准备日期来实现这一点。
除了陷入循环之外,有没有人有解决办法?
感谢您的建设性回答
【问题讨论】:
-
我不明白这可能吗?因为您的数据库中不存在不在该日期范围内的其他记录。因此,您必须创建新记录,但不要将它们保存在数据库中。然后您应该编写查询以获取所需格式的值。
-
Try this method of lte and gte 并检查
QS.count()方法是否为零,使用普通 python 查询返回输出。
标签: django django-rest-framework django-filter