溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么使用django正續(xù)或者倒序查庫(kù)

發(fā)布時(shí)間:2020-07-23 11:46:19 來(lái)源:億速云 閱讀:170 作者:小豬 欄目:開(kāi)發(fā)技術(shù)

小編這次要給大家分享的是怎么使用django正續(xù)或者倒序查庫(kù),文章內(nèi)容豐富,感興趣的小伙伴可以來(lái)了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

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

如何訂購(gòu)由降我的查詢?cè)贒jango按日期設(shè)定?

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”前表示降序排列。升序是不言而喻的。

我們不必過(guò)濾器之前添加的所有()()。這將仍然有效,但你只需要添加所有()當(dāng)你想從根本上查詢集的所有對(duì)象。

更多關(guān)于這個(gè)在這里:

3.

它的工作原理去除

.all()

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

補(bǔ)充知識(shí):os.getcwd()、sys.path[0]、sys.argv[0]和__file__的區(qū)別

要分清這幾個(gè)的區(qū)別與使用條件,實(shí)際測(cè)試一下是最準(zhǔn)確的。

設(shè)計(jì)測(cè)試方法:

一個(gè)主模塊用來(lái)運(yùn)行,一個(gè)子模塊用來(lái)被主模塊調(diào)用

主模塊路徑:

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

子模塊路徑:

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

運(yùn)行模塊的路徑:

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

ok 現(xiàn)在編寫兩模塊代碼

子模塊 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()

目錄結(jié)構(gòu)

├── 01test
│ ├── 001_test # 運(yùn)行目錄
│ └── mainmodule.py # 主模塊
└── 02test
└── submodule.py # 被調(diào)用模塊

ok 來(lái)看看結(jié)果

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

我去,出現(xiàn)了點(diǎn)小狀況

原因是系統(tǒng)找不到該模塊的路徑,我們來(lái)人工添加一個(gè)路徑

在主模塊中前面添加

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

再來(lái)試試 - -

結(jié)果如下:

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

結(jié)合目錄結(jié)構(gòu)看就清楚了

├── 01test
│ ├── 001_test # 運(yùn)行目錄
│ └── mainmodule.py # 主模塊
└── 02test
└── submodule.py # 被調(diào)用模塊

os.getcwd() 指的是運(yùn)行程序的目錄 (絕對(duì)路徑)

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

sys.argv[0] 運(yùn)行模塊時(shí),pyhton 后面的參數(shù)

__file__ 這個(gè)就有點(diǎn)奇怪了,主模塊顯示的相對(duì)路徑,而被調(diào)用模塊卻用的絕對(duì)路徑

__file__ 還是有點(diǎn)疑慮,于是去 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.

意思大致是:

如果你(你所在的當(dāng)前目錄)不在sys.path的范圍里,你會(huì)得到絕對(duì)路徑,反之,你會(huì)得到相對(duì)路徑

如果你在當(dāng)前目錄加載模塊,并且當(dāng)前目錄在sys.path 里, 你會(huì)得到相對(duì)路徑。

對(duì)比上面的結(jié)果,符合。

不過(guò)我們還是應(yīng)該再來(lái)驗(yàn)證下。我們把當(dāng)前路徑換到子模塊下

├── 01test
│ ├── 001_test
│ └── mainmodule.py # 主模塊
└── 02test # 當(dāng)前目錄
└── submodule.py # 被調(diào)用模塊

結(jié)果如下:

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

是不是覺(jué)得有問(wèn)題?幸虧我們測(cè)試了

突然想起我我運(yùn)行mainmodule用的相對(duì)路徑

像這樣:

$ python ../01test/mainmodule.py

然后__file__就是相對(duì)路徑的,如果我們換成絕對(duì)路徑呢?

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

結(jié)果如下:

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!

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

總結(jié)一下:

os.getcwd() 指的是當(dāng)前目錄,絕對(duì)路徑

sys.path[0] sys.path 指的是path,sys.path[0]為主模塊目錄的絕對(duì)路徑,在模塊運(yùn)行的時(shí)候被自動(dòng)添加進(jìn)去

sys.argv[0] 就是你運(yùn)行時(shí) python 后面跟的參數(shù)

__file__ 表示所在模塊文件的路徑,和系統(tǒng)找到該模塊的方式有關(guān),你是用絕對(duì)路徑去加載該模塊,那么__file__就為絕對(duì)模塊文件路徑,如果你給系統(tǒng)提供相對(duì)路徑去加載該模塊,那么改文件路徑為相對(duì)路徑

看完這篇關(guān)于怎么使用django正續(xù)或者倒序查庫(kù)的文章,如果覺(jué)得文章內(nèi)容寫得不錯(cuò)的話,可以把它分享出去給更多人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI