django filter查询多选_动态filter查询数据Django实现方法
這是我在學習Django時看到的關于動態filter查詢數據Django實現方法。當時很受用,解決了我在工作中遇到的一個問題。可能有朋友會需要,轉來玩蛇網python學習平臺和大家一同分享下。
在平時用Djangoa工作時,需要處理像是對多個字段進行查詢找結果這樣的任務太常見了。如果是既定的固定字段還行,要是遇到需要處理動態字段的時候,真是一個頭兩個大的感腳。需要有個好的思路,別人給一點點指定就豁然開朗的感覺很好。
動態filter查詢數據Django實現方法代碼如下:
比如有個類,像下邊這樣:
class Entry( models.Model ):
user = models.CharField(max_length=64)
category = models.CharField(max_length=64 )
title = models.CharField( max_length = 64 )
entry_text = models.TextField()
deleted_datetime = models.DateTimeField()
我們進行一個動態的查詢,這里就需要用到 kwargs.
kwargs = {
# 動態查詢的字段
}
# 選擇deleted_datetime為空的記錄
if exclude_deleted:
kwargs[ 'deleted_datetime__isnull' ] = True
# 選擇特的category
if category is not None:
kwargs[ 'category' ] = category
# 特定的用戶
if current_user_only:
kwargs[ 'user' ] = current_user
# 根據標題查詢
if title_search_query != '':
kwargs[ 'title__icontains' ] = title_search_query
# 應用所有的查詢
entries = Entry.objects.filter( **kwargs )
# 打印出所有的結果檢查
print entries
#---------------www.iplaypy.com-----------------------------------
在這里要注意,如果用這種方式,在Q object方式下,是有問題的,要采用如下方式來處理。
kwargs = { 'deleted_datetime__isnull': True }
args = ( Q( title__icontains = 'Foo' ) | Q( title__icontains = 'Bar' ) )
entries = Entry.objects.filter( *args, **kwargs )
玩蛇網文章,轉載請注明出處和文章網址:https://www.iplaypy.com/code/other/o2133.html
相關文章 Recommend
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的django filter查询多选_动态filter查询数据Django实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝预授权冻结额度是什么意思
- 下一篇: win7制作ntp服务器,如何将Win7