过滤DateTimeField Django Rest Framework

时间:2018-08-04 10:44:48

标签: python django django-models django-rest-framework

我正在使用django rest框架构建API。 我有这个模型:

class Versement(models.Model):
     date = models.DateTimeField()
     organisme = models.ForeignKey(Organisme, on_delete=models.CASCADE, null=True)

这是我的观点:

class VersementViewSet(viewsets.ModelViewSet):
     queryset = Versement.objects.all()
     serializer_class = VersementSerializer
     pagination_class = StandardResultsSetPagination
     filter_backends = (filters.SearchFilter, DjangoFilterBackend,)
     filter_class = VersementFilter
     search_fields = ('organisme__nom', 'organisme__code')

还有我的过滤器:

class VersementFilter(django_filters.FilterSet):
    class Meta:
        model = Versement
        fields = ['organisme__id']

是否可以将字段“日期”添加到我的字段中并仅搜索特殊年份?例如:

{{URL}}/versements/?date=2015

如果你们知道如何进行... 预先谢谢你。

1 个答案:

答案 0 :(得分:0)

您可以显式定义过滤器字段并指定lookup_expr='year'

class VersementFilter(django_filters.FilterSet):
    date = django_filters.NumberFilter(field_name='date', lookup_expr='year')

    class Meta:
        model = Versement
        fields = ['organisme__id', 'date']