【问题标题】:Filtering DateTime field with Date Field using Filter Set使用过滤器集过滤带有日期字段的日期时间字段
【发布时间】:2018-01-07 04:14:27
【问题描述】:

如何仅使用日期字段过滤日期时间字段。 使用下面的模型和过滤器

http://localhost:8020/applications/?created=19-07-2017 即使记录的创建日期=19-07-2017(日期时间记录的创建日期)也会返回一个空查询集

在我的模型中.PY

Class Application(models.Model):
  created = models.DateTimeField(auto_now=False, auto_now_add=True)

在我的过滤器中.PY

import django_filters

class ApplicationFilter(django_filters.FilterSet)
    created = django_filters.DateTimeFilter( label='Created')

    class Meta:
       model = Application
       fields = ['created']

【问题讨论】:

    标签: django django-filter django-filters


    【解决方案1】:

    使用包含作品。 改用 DateFilter 并指定日期格式

    created=django_filters.DateFilter(input_formats=['%Y-%m-%d','%d-%m-%Y'],lookup_expr='icontains'
    

    【讨论】:

      【解决方案2】:

      使用contains

          created = django_filters.DateTimeFilter(name='created',lookup_expr='contains')
      

      可能还需要更改日期格式,yyyy-mm-dd

      【讨论】:

        【解决方案3】:

        在您的 filters.py 中写下:

        import django_filters
        
        class ApplicationFilter(django_filters.FilterSet)
            class Meta:
               model = Application
               fields = {'created': '__all__'}
        

        在您的网址中:

        http://localhost:8020/applications/?created__date=19-07-2017 
        

        【讨论】:

          猜你喜欢
          • 2020-11-27
          • 1970-01-01
          • 1970-01-01
          • 2010-12-15
          • 2022-08-22
          • 1970-01-01
          • 2015-03-06
          • 2021-09-30
          • 1970-01-01
          相关资源
          最近更新 更多