[英]What's the cleanest way of counting the iteration of a queryset loop?
我需要遍歷一個查詢集並將對象與序列號i一起放入字典中,它們出現在查詢集中。 但是,Python for循環似乎沒有提供序列號。 因此,我必須創建自己的變量i並在每個循環中遞增它。 我做了類似的事情,這是最干凈的解決方案嗎?
ledgers = Ledger.objects.all()
i = 0
for ledger in ledgers:
print('Ledger no '+str(i)+' is '+ledger.name)
i += 1
enumerate(…)
[Python-doc]就是為此而設計的:
ledgers = Ledger.objects.all()
for i, ledger in enumerate(ledgers):
print(f'Ledger no {i} is {ledger.name}')
您可以這樣注釋索引:
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
有了它,您將獲得一個查詢集,可用於進一步的數據庫操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.