簡體   English   中英

按月DRF篩選日期

[英]Filter date by month DRF

我想過濾按月份和年份創建的模型。

這是我的模型:

class Cotisation(models.Model):
    date = models.DateTimeField()
    campagne = models.ForeignKey(Campagne, on_delete=models.CASCADE)

    class Meta:
        managed = True
        db_table = 'cotisations'
        ordering = ['-id']

這是我的看法:

class CotisationViewSet(viewsets.ModelViewSet):
    queryset = Cotisation.objects.all()
    serializer_class = CotisationSerializer
    pagination_class = StandardResultsSetPagination
    filter_backends = (filters.SearchFilter, DjangoFilterBackend, filters.OrderingFilter,)
    filter_class = CotisationFilter
    search_fields = ('organism__name', 'organism__num_onic')
    ordering_fields = ('date',)

這是我的過濾器類:

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

     class Meta:
         model = Cotisation
         fields = ['organism__id', 'campaign__id', 'campaign__year', 'month', 'year']

當我嘗試按年份查詢時,效果很好:

GET http://{{URL}}/cotisations/?year=2019

但是當我嘗試使用month時它不起作用:

GET http://{{URL}}/cotisations/?month=10

先感謝您。

最好,傑里米。

PS:新年快樂!

解:

@Horion完美回答。

下面是解決這一問題的答案: 答案

我已經多次使用精確的過濾器(在PG上),沒有問題。

可能是您將MySQL用作默認數據庫,如果是這樣,那么當USE_TZ = True時,必須將時區定義安裝到數據庫中才能使用此過濾器。

檢查這張票這個問題

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM