我想按月和年过滤创建的模型。
这是我的模特
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
但是当我尝试使用月份时它不起作用:
GET http://{{URL}}/cotisations/?month=10
谢谢。
最好, 杰里米。
PS:新年快乐!
解决方案:
@Horion完美回答。
以下是解决该问题的答案:Answer
答案 0 :(得分:4)
我多次使用精确过滤器(在PG上),没有问题。
可能您将MySQL用作默认数据库,如果是这样,则必须在USE_TZ = True时将时区定义安装到数据库中,才能使用此过滤器。
希望这会有所帮助。