django_filter過濾前端的時間段查詢_模糊查詢


需求

前端要查詢一個時間段中的所有數據, 比如查詢今天早上7:00到晚上7:00之間寫的所有博客

后端使用django-filter就可以完美的實現

views.py

class BlogModelViewSet(ModelViewSet):

    queryset = Blog.objects.all()
    serializer_class = BlogModelSerializer

    filter_backends = [DjangoFilterBackend]
    filter_class = BlogFilter # 指定過濾器 

models.py

class Blog(models.Model):
    title = models.CharField(max_length=12)
    create_time = models.DateTimeField()

自定義過濾器對時間進行過濾

filter.py

import django_filters 

class BlogFilter(django_filters.rest_framework.FilterSet):
 	s_time = django_filters.DateTimeFilter(field_name='create_time', lookup_expr='gte') # 指定過濾的字段
	e_time = django_filters.DateTimeFilter(field_name='create_time', lookup_expr='lte')
    class Meta:
        model = Blog
        fields = ['s_time', 'e_time']

查詢就可以實現過濾效果了

http://127.0.0.1:8000/?s_time=2020-12-02 12:00:00&e_time=2021-12-13 12:00:00

  • 模糊查詢
class BlogFilter(django_filters.rest_framework.FilterSet):
	title = django_filters.CharFilter(field_name='title', lookup_expr='icontains')
    class Meta:
        model = Blog
        fields = ['title']

參數說明: field_name 對應模型中的字段 lookup_expr 指定過濾使用的方法
icontains 就是模糊查詢


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM