0
我通過分配序數到DocumentMemberships
,這是一個表示Document
和Collection
的交點的模型管理的Documents
在Collection
的順序。這裏是一個地方,我這樣做(這是Collection
方法中):無法通過指數評價中修改查詢集對象使用Django
memberships = self.membership_set.order_by('document__title', 'document__revision').all()
for i in range(memberships.count()):
if memberships[i].document.category == 'SDS':
memberships[i].ordinal = i + 1000 # push documents in the 'SDS' category to the end
else: memberships[i].ordinal = i # leave the rest ordered by title and then revision
memberships[i].save()
然而,當我運行此代碼後檢查在管理界面的DocumentMemberships
,所有的序數爲零(默認爲那個領域)。
我將問題追溯到QuerySet中的對象被索引訪問時未正確修改。這是一個shell會話更清楚地表明瞭這個問題:
>>> memberships = s.membership_set.order_by('document__title', 'document__revision').all()
>>> memberships.all()
[large number of DocumentMembership objects]
>>> memberships[0]
[DocumentMembership object]
>>> memberships[0].ordinal = 2
>>> memberships[0].ordinal
0
的序數必須全部計算爲進一步處理前的整數,所以我不能簡單地迭代它。我錯過了什麼?