【发布时间】:2016-08-14 14:25:27
【问题描述】:
我在模型中有一个名为“session_start”的 DateTimeField。我正在尝试过滤一个日期范围内的 session_start 字段。
Model.py
class TimeCard(models.Model):
profile = models.ForeignKey(settings.AUTH_USER_MODEL)
session_start = models.DateTimeField()
过滤器需要满足以下条件:
- 在“start_date”和“end_date”范围内过滤“session_start”字段。
- 验证“start_date”和“end_date”字段。这意味着“start_date”值应该是“end_date”值之前的日期。如果传递了无效数据,则根据默认值返回查询集。默认值为 -
start_date = 从今天开始的 30 天。
end_date = 今天。
我编写了以下代码来过滤“start_date”和“end_date”之间的范围内的“session_start”字段。现在我陷入了检查 start_date 大于 end_date 的条件。我该怎么做才能进行验证?
filter.py
class TimeCardFilter(filters.FilterSet):
start_date = django_filters.DateTimeFilter(name="session_start", lookup_type='gte')
end_date = django_filters.DateTimeFilter(name="session_start", lookup_type='lte')
class Meta:
model = TimeCard
fields = ['profile', 'start_date', 'end_date']
【问题讨论】:
标签: python django django-rest-framework django-filter