django - 将日期范围与 FilterSet Django 一起使用
问题描述
我正在尝试创建一个 Date Range Filter ,所以这是我的模型和过滤器:
class Caixa(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
data = models.DateField('Data')
total = models.DecimalField('Total', decimal_places=2, max_digits=10, null=True)
unidade = models.ForeignKey(Unidade, on_delete=models.CASCADE)
def __str__(self):
return "Caixa " + self.unidade.nome
class CaixaFilter(django_filters.FilterSet):
data_inicial = django_filters.DateFilter(field_name='data', lookup_expr='gte'),
data_final = django_filters.DateFilter(field_name='data', lookup_expr='lte')
class Meta:
model = Caixa
fields = ['data']
因此,在我的 HTML 中,我有以下内容:
<form method="get">
<div class="row">
<div class="col s6">
{% render_field filter.form.data_inicial class="datepicker" %}
</div>
<div class="col s6">
{% render_field filter.form.data_final class="datepicker" %}
</div>
</div>
<button type="submit" class="btn btn-primary">
<span class="glyphicon glyphicon-search"></span> Buscar
</button>
</form>
但只有“ data_final ”字段出现在 HTML 中。
解决方案
import django_filters
class CaixaFilter(django_filters.FilterSet):
data = django_filters.DateFromToRangeFilter()
class Meta:
model = Caixa
fields = ['data']
这样,您可以使用两个键,date_after
并date_before
过滤日期范围。
注意:后缀 ,after
和before
are 属于django-filter==2.x
推荐阅读
- windows - UWP NavigationView.HeaderTemplate 在 1903 上不起作用
- android - 使用改造和 rxjava Android 的多个并行 api 请求
- c++ - 如何正确使用 PTHREAD_PRIO_INHERIT 和 PTHREAD_PRIO_PROTECT?
- python - 启动器中的致命错误:无法创建进程
- javascript - 使用循环创建内容时,光滑的滑块不起作用
- css-selectors - mPDF - 仅在奇数页上显示背景
- javascript - 如何为属性创建 javascript eventlistner
- python - 在 Python 中读取 .json 文件时的预期对象或值
- mysql - 如何使用计数创建 laravel 多个连接并显示所有数据
- react-native - 无法找到由 `FlipperKit/FlipperKitLayoutPlugin` 依赖的`YogaKit (~> 1.18)` 的规范