1. 程式人生 > 程式設計 >django正續或者倒序查庫例項

django正續或者倒序查庫例項

Django的ORDER_BY查詢集,升序和降序

如何訂購由降我的查詢在Django按日期設定?

Reserved.objects.all().filter(client=client_id).order_by('check_in')

我只是想從降所有由check_in日期保留篩選。 任何人都可以可以的想法? 提前致謝

1.

Reserved.objects.all().filter(client=client_id).order_by('-check_in')

注意-前check_inDjango的

2.

Reserved.objects.filter(client=client_id).order_by('-check_in')

連字元“-”在“check_in”前表示降序排列。升序是不言而喻的。

我們不必過濾器之前新增的所有()()。這將仍然有效,但你只需要新增所有()當你想從根本上查詢集的所有物件。

更多關於這個在這裡:

3.

它的工作原理去除

.all()

Reserved.objects.filter(client=client_id).order_by('-check_in')

補充知識:os.getcwd()、sys.path[0]、sys.argv[0]和__file__的區別

要分清這幾個的區別與使用條件,實際測試一下是最準確的。

設計測試方法:

一個主模組用來執行,一個子模組用來被主模組呼叫

主模組路徑:

/Users/stephen/Documents/code/test_dir/01test

子模組路徑:

/Users/stephen/Documents/code/test_dir/02test

執行模組的路徑:

/Users/stephen/Documents/code/test_dir/01test/001_test

ok 現在編寫兩模組程式碼

子模組 submodule.py

import os
import sys
def child_test():
print('sub os.getcwd():{}'.format(os.getcwd()))
print('sub sys.path[0]:{}'.format(sys.path[0]))
print('sub sys.argv[0]:{}'.format(sys.argv[0]))
print('sub __file__:{}'.format(__file__))
if __name__ == '__main__':
chid_test()

主模組 mainmodule.py

import os
import sys
import submodule
def main():
 print('main os.getcwd():{}'.format(os.getcwd()))
 print('main sys.path[0]:{}'.format(sys.path[0]))
 print('main sys.argv[0]:{}'.format(sys.argv[0]))
 print('main __file__:{}'.format(__file__))

 submodule.child_test()
if __name__ == '__main__':
 main()

目錄結構

├── 01test
│ ├── 001_test # 執行目錄
│ └── mainmodule.py # 主模組
└── 02test
└── submodule.py # 被呼叫模組

ok 來看看結果

Traceback (most recent call last):
 File "../mainmodule.py",line 3,in <module>
 import submodule
ModuleNotFoundError: No module named 'submodule'

我去,出現了點小狀況

原因是系統找不到該模組的路徑,我們來人工新增一個路徑

在主模組中前面新增

sys.path.append('/Users/stephen/Documents/code/test_dir/02test/')

再來試試 - -

結果如下:

main os.getcwd():/Users/stephen/Documents/code/test_dir/01test/001_test
main sys.path[0]:/Users/stephen/Documents/code/test_dir/01test
main sys.argv[0]:../mainmodule.py
main __file__:../mainmodule.py
sub os.getcwd():/Users/stephen/Documents/code/test_dir/01test/001_test
sub sys.path[0]:/Users/stephen/Documents/code/test_dir/01test
sub sys.argv[0]:../mainmodule.py
sub __file__:/Users/stephen/Documents/code/test_dir/02test/submodule.py

結合目錄結構看就清楚了

├── 01test
│ ├── 001_test # 執行目錄
│ └── mainmodule.py # 主模組
└── 02test
└── submodule.py # 被呼叫模組

os.getcwd() 指的是執行程式的目錄 (絕對路徑)

sys.path[0] 主要模組的目錄 (絕對路徑)

sys.argv[0] 執行模組時,pyhton 後面的引數

__file__ 這個就有點奇怪了,主模組顯示的相對路徑,而被呼叫模組卻用的絕對路徑

__file__ 還是有點疑慮,於是去 stack overflow(click to)看到了這句話,如下:

So,if you are outside the part of sys.path that contains the module,you'll get an absolute path. If you are inside the part of sys.path that contains the module,you'll get a relative path.

If you load a module in the current directory,and the current directory isn't in sys.path,you'll get an absolute path.

If you load a module in the current directory,and the current directory is in sys.path,you'll get a relative path.

意思大致是:

如果你(你所在的當前目錄)不在sys.path的範圍裡,你會得到絕對路徑,反之,你會得到相對路徑

如果你在當前目錄載入模組,並且當前目錄在sys.path 裡, 你會得到相對路徑。

對比上面的結果,符合。

不過我們還是應該再來驗證下。我們把當前路徑換到子模組下

├── 01test
│ ├── 001_test
│ └── mainmodule.py # 主模組
└── 02test # 當前目錄
└── submodule.py # 被呼叫模組

結果如下:

main os.getcwd():/Users/stephen/Documents/code/test_dir/02test
main sys.path[0]:/Users/stephen/Documents/code/test_dir/01test
main sys.argv[0]:../01test/mainmodule.py
main __file__:../01test/mainmodule.py
sub os.getcwd():/Users/stephen/Documents/code/test_dir/02test
sub sys.path[0]:/Users/stephen/Documents/code/test_dir/01test
sub sys.argv[0]:../01test/mainmodule.py
sub __file__:/Users/stephen/Documents/code/test_dir/02test/submodule.py

是不是覺得有問題?幸虧我們測試了

突然想起我我執行mainmodule用的相對路徑

像這樣:

$ python ../01test/mainmodule.py

然後__file__就是相對路徑的,如果我們換成絕對路徑呢?

$ python /Users/stephen/Documents/code/test_dir/01test/mainmodule.py

結果如下:

main os.getcwd():/Users/stephen/Documents/code/test_dir/02test
main sys.path[0]:/Users/stephen/Documents/code/test_dir/01test
main sys.argv[0]:/Users/stephen/Documents/code/test_dir/01test/mainmodule.py
main __file__:/Users/stephen/Documents/code/test_dir/01test/mainmodule.py
sub os.getcwd():/Users/stephen/Documents/code/test_dir/02test
sub sys.path[0]:/Users/stephen/Documents/code/test_dir/01test
sub sys.argv[0]:/Users/stephen/Documents/code/test_dir/01test/mainmodule.py
sub __file__:/Users/stephen/Documents/code/test_dir/02test/submodule.py
soga!

終於弄清楚了,突然有種小興奮啊

總結一下:

os.getcwd() 指的是當前目錄,絕對路徑

sys.path[0] sys.path 指的是path,sys.path[0]為主模組目錄的絕對路徑,在模組執行的時候被自動新增進去

sys.argv[0] 就是你執行時 python 後面跟的引數

__file__ 表示所在模組檔案的路徑,和系統找到該模組的方式有關,你是用絕對路徑去載入該模組,那麼__file__就為絕對模組檔案路徑,如果你給系統提供相對路徑去載入該模組,那麼改檔案路徑為相對路徑

以上這篇django正續或者倒序查庫例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。