當然有更好的方法來做到這一點?重構這個Python代碼來遍歷容器
results = []
if not queryset is None:
for obj in queryset:
results.append((getattr(obj,field.attname),obj.pk))
問題是,有時queryset是None,當我嘗試迭代它時會導致異常。在這種情況下,我只想將結果設置爲空列表。這段代碼來自Django視圖,但我認爲不重要 - 這看起來像是一個更一般的Python問題。
編輯:我發現它是我的代碼將一個空的查詢集變成了一個「無」,而不是返回一個空列表。能夠假定queryset始終可迭代,通過允許刪除「if」語句來簡化代碼。以下答案可能對其他具有相同問題的人有用,但不能修改其代碼以保證queryset不是「無」。
沒有什麼可這個被改進 - 如圖所示。如果你可以解釋爲什麼「有時」queryset是None,那麼也許我們可以幫忙。 – 2009-01-30 12:05:20
最後一行有錯字嗎? append需要一個參數,並且關閉和開放括號的數量不相互對應。 – SilentGhost 2009-01-30 12:07:56
是的,修正了錯字。查詢集是從數據庫搜索中設置的,如果沒有結果,它似乎被設置爲無。 – user27478 2009-01-30 12:12:29