我有以下型號:如何更新已註釋的查詢集?
class Work(models.Model):
visible = models.BooleanField(default=False)
class Book(models.Model):
work = models.ForeignKey('Work')
我試圖更新,像這樣一些行:
qs=Work.objects.all()
qs.annotate(Count('book')).filter(Q(book__count__gt=1)).update(visible=False)
但是,這給了一個錯誤:
DatabaseError:子查詢中有太多列 LINE 1:... SET「visible」= false WHERE「app_work」。「id」IN(SELECT ...
如果我刪除t他更新子句,查詢運行沒有問題,並返回我所期待的。
看起來這個錯誤發生在帶有註釋和後續更新的查詢上。有沒有其他的方式來寫這個?
我其實不需要補充。查詢返回正確的行,但問題是我無法更新它們。 – jess
對。我的意思是,你可以使用相同的基本方法來獲得應該是批量更新的unannotated查詢集。 – acjay
@jess:我只是編輯了一個包含我的意思的例子。讓我知道這是否有效 – acjay