如何通过在 django 中过滤两个不同的日期来获取数据?

Posted

技术标签:

【中文标题】如何通过在 django 中过滤两个不同的日期来获取数据?【英文标题】:How to get data by filtering with two different dates in django? 【发布时间】:2021-01-27 16:58:42 【问题描述】:

这是我的模型;

class FundData(models.Model):
   fund = models.ForeignKey(Fund, on_delete=models.CASCADE, related_name="data_of_fund", verbose_name="Fund")
   date = models.DateField(auto_now_add=False, editable=True, blank=False, verbose_name="Date")
   price = models.FloatField(max_length=15, blank=False, verbose_name="Fund Price")

这是我要选择日期的前端;

<div class="col-12 d-flex align-items-end">
        <div>
            <label>Starting Date</label>
            <input id="startDatePicker" type="text" class="form-control datepicker" autocomplete="off">
        </div>
        <div class="mx-2">
            <label>Ending Date</label>
            <input id="endDatePicker" type="text" class="form-control datepicker" autocomplete="off">
        </div>
        <a onclick="getFundReturnsByDate()" class="btn btn-info" href="javascript:void(0);"> Show<i
                class="fas fa-caret-right"></i></a>
</div>

我想要的是用户应该选择 2 个日期并将所选日期的数据放在一个表格中。 任何帮助表示赞赏,谢谢!

【问题讨论】:

【参考方案1】:

您可以使用 django range 过滤器。

FundData.objects.filter(date__range=[start_date, end_date])

【讨论】:

如何将 datepicker 的值放入 start_date & end_date? @turkaybeyazay,你最好阅读 Django 文档。请阅读表格相关部分。 我设法获得了 datepicker 的值,但现在我收到一个错误,名为错误格式的日期格式,知道吗?【参考方案2】:

使用

FundData.objects.filter(date__range=["2011-01-01", "2011-01-31"])

或者,如果您只是想按月过滤:

FundData.objects.filter(date__year='2011', 
                      date__month='01')

【讨论】:

以上是关于如何通过在 django 中过滤两个不同的日期来获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 中按日期范围过滤记录?

在 Django admin 中按自定义日期范围过滤

如何在 django 中使用日期时间过滤器仅用于日期和月份?

如何使用 django F 表达式仅过滤日期时间字段的日期

如何根据 django 模板中的日期过滤列表

Django 查询 - 如何按日期过滤总和?