我需要遍歷一個查詢集并將物件與序列號i一起放入字典中,它們出現在查詢集中。然而,Python for回圈似乎沒有提供序列號。因此,我必須創建自己的變數i并在每個回圈中遞增它。我做了類似的事情,這是最干凈的解決方案嗎?
ledgers = Ledger.objects.all()
i = 0
for ledger in ledgers:
print('Ledger no ' str(i) ' is ' ledger.name)
i = 1
uj5u.com熱心網友回復:
enumerate(…)[Python-doc]就是為此而設計的:
ledgers = Ledger.objects.all()
for i, ledger in enumerate(ledgers):
print(f'Ledger no {i} is {ledger.name}')
uj5u.com熱心網友回復:
您可以這樣注釋索引:
from django.db.models import Window, F
ledgers = Ledger.objects.annotate(index=Window(expression=DenseRank(), order_by=F('id').desc()))
ledgers_dict = dict(ledgers.values_list('index', 'name'))
ledgers.filter(index__lt=5, name__contains='foo') # ledgers is a queryset
有了它,您將獲得一個查詢集,可用于進一步的資料庫操作。
密集等級
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410514.html
標籤:
