Reputation: 739
I'm building an API with the django rest framework. I have this model:
class Versement(models.Model):
date = models.DateTimeField()
organisme = models.ForeignKey(Organisme, on_delete=models.CASCADE, null=True)
This is my view:
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')
And my filter:
class VersementFilter(django_filters.FilterSet):
class Meta:
model = Versement
fields = ['organisme__id']
Is it possible to add the field "date" to my fields and only search for a special year ? For example:
{{URL}}/versements/?date=2015
If you guys know how to proceed... Thank you in advance.
Upvotes: 2
Views: 284
Reputation: 47354
You can define filter field explicitly and specify 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']
Upvotes: 1