Django項目單字段區(qū)間查詢的實現(xiàn)
在Django項目中會碰到一些需求就是查詢某個表中的一些字段從某日到某日的數(shù)據(jù),而且是對但字段查詢這個時候我們有兩兩種方法解決
單字段類型是DateTimeField的
查詢?nèi)掌诜秶?這個時候在filter.py里面重寫DateTimeFromToRangeFilter,為什么要重寫呢?
因為我們做區(qū)間查詢 起始與結(jié)束時間兩個日期當天的數(shù)據(jù)也需要的,如果不重寫的話起止兩天當天的數(shù)據(jù)是沒有的,它的查詢規(guī)則是<=沒有>=這個時候我們就需要去重寫,在獲得結(jié)束日期的時候給它加一天日期即可達到效果>=
注意重寫這個方法URL必須按照規(guī)定前綴后綴是 _after 和 _before
http://192.168.31.14:8000/gt_computer/?create_time_after=2023-09-13&create_time_before=2023-09-13
filters.py
class CustomDateTimeFromToRangeFilter(filters.DateTimeFromToRangeFilter): def filter(self, qs, value): if value and value.stop: new_value = slice(value.start, value.stop + timedelta(days=1)) return super().filter(qs, new_value) return super().filter(qs, value) class ComputerFileter(filters.FilterSet): create_time = CustomDateTimeFromToRangeFilter() class Meta: model = ComputerStatusRecord fields = '__all__'
serializers.py
class ComputerSerializer(ModelSerializer): create_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", read_only=True) # 注意重寫之后需要添加read_only要不然models.py里面的設置的屬性沒用了 class Meta: model = ComputerStatusRecord fields = "__all__"

方法二
上面的方法單指的是時間字段,方法二可以指認到數(shù)字及時間都可以匹配,就是當我們get請求進來都會走到get_queryset,這個時候我們可以重寫它返回指定的內(nèi)容做區(qū)間查詢即可。
這個時候我們就不需要指定固定前后綴都可以使用
views.py
def get_queryset(self):
queryset = super().get_queryset()
filters = {}
for field_name in ['sum_number', 'over_kill_number', 'miss_number', # 需要區(qū)間查詢的字段
'over_kill_rate', 'miss_rate']:
after = self.request.query_params.get(f'{field_name}_after') # 可以根據(jù)自己的需求而定
before = self.request.query_params.get(f'{field_name}_before')
if after and before:
filters[f'{field_name}__gte'] = after
filters[f'{field_name}__lte'] = before
if filters:
queryset = queryset.filter(**filters) # 區(qū)間查詢
return queryset

到此這篇關(guān)于Django項目單字段區(qū)間查詢的實現(xiàn)的文章就介紹到這了,更多相關(guān)Django 單字段區(qū)間查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python通過urllib2獲取帶有中文參數(shù)url內(nèi)容的方法
這篇文章主要介紹了python通過urllib2獲取帶有中文參數(shù)url內(nèi)容的方法,涉及Python中文編碼的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
python實現(xiàn)自動登錄跳轉(zhuǎn)頁面并獲取信息
這篇文章主要為大家詳細介紹了如何使用python實現(xiàn)自動登錄跳轉(zhuǎn)頁面并獲取信息功能,文中的示例代碼講解詳細,有需要的小伙伴可以跟隨小編一起學習一下2025-05-05
Pyinstaller打包.py生成.exe的方法和報錯總結(jié)
今天小編就為大家分享一篇關(guān)于Pyinstaller打包.py生成.exe的方法和報錯總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04
Python調(diào)用VBA實現(xiàn)保留原始樣式的表格合并方法
本文主要介紹了Python調(diào)用VBA實現(xiàn)保留原始樣式的表格合并方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01
對Pandas DataFrame缺失值的查找與填充示例講解
今天小編就為大家分享一篇對Pandas DataFrame缺失值的查找與填充示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11

